File size: 4,047 Bytes
4097d87
 
ef3c57c
 
 
 
 
 
4097d87
 
 
 
 
 
 
 
 
5ae2ee7
4097d87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36101c8
4097d87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
license: cc-by-nc-sa-4.0
datasets:
- elyza/ELYZA-tasks-100
language:
- ja
base_model:
- llm-jp/llm-jp-3-13b
---
---

# README

このリポジトリには、`llm-jp/llm-jp-3-13b`にLoRAアダプタを適用したモデルでタスク推論を行うコードが含まれます。

## 概要

- `inference_code.py`:推論を行うためのコード。  
   - ベースモデルとLoRAアダプタをHugging Face Hubからロードし、4bit量子化でGPUメモリ負荷を低減しながらタスクを処理します。
   - `elyza-tasks-100-TV_0.jsonl` のようなタスク定義ファイルから入力を読み込み、モデルによる応答を生成します。
   - 推論結果は `submission_attempt.jsonl` というファイルにJSON Lines形式で保存します。
   
## ベースモデル
- [llm-jp/llm-jp-3-13b](https://huggingface.co/llm-jp/llm-jp-3-13b)

## 使用したデータ

本LoRAアダプタは以下のデータを用いてSFTを実施しています。

- [ichikara-instruction データ](https://liat-aip.sakura.ne.jp/wp/llm%e3%81%ae%e3%81%9f%e3%82%81%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%a9%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%87%e3%83%bc%e3%82%bf-%e5%85%ac%e9%96%8b/) (CC-BY-NC-SA)
- [ELYZA-tasks-100 データセット](https://huggingface.co/datasets/elyza/ELYZA-tasks-100)

## ライセンス

- 本リポジトリで提供されるLoRAアダプタおよび生成物は **CC-BY-NC-SA-4.0** の下で提供されます。  
- ベースモデルおよび元データセットのライセンスについては、それぞれの提供元で定められた条件に従ってください。

## ファイル構成

- `inference_code.py`:推論コード
- `elyza-tasks-100-TV_0.jsonl`:タスク入力用JSONLファイル(事前にアップロード)
- `submission_attempt.jsonl`:推論結果出力ファイル(コード実行後に生成)

## 前提条件

- Python 3.10 以上(ColabやOmnicampus環境を想定)
- Hugging Face Hubへのアクセス可能なトークン(`HF_TOKEN`変数で指定)
- 使用するモデル(`base_model_id`)およびLoRAアダプタ(`adapter_repo_id`)へのread権限
- 4bit量子化・bfloat16対応のGPU(NVIDIA L4)RAM:24GB ストレージ:200GB を想定

## 実行手順

1. `HF_TOKEN`を設定  
   コード冒頭の `HF_TOKEN = "hf_..."` 部分にご自身のHugging Faceトークンを貼り付けてください。  
   トークンは `huggingface-cli login` で取得できます。

2. `base_model_id``adapter_repo_id` の設定  
   - `base_model_id` にベースモデルIDを指定します(例:`llm-jp/llm-jp-3-13b`)。
   - `adapter_repo_id` にアップロード済みのLoRAアダプタリポジトリIDを指定します。

3. `elyza-tasks-100-TV_0.jsonl` の用意  
   推論対象となるタスクデータを同一フォルダに配置してください。

4. コード実行  
   `inference_code.py`を実行します。必要なライブラリがインストールされ、モデルやトークナイザがロードされ、推論が開始されます。

5. 結果確認  
   実行後、`submission_attempt.jsonl`に推論結果がタスクごとに出力されます。

## カスタマイズ

- モデルパラメータ(`max_new_tokens`, `temperature`, `top_p`など)をコード内で変更可能です。
- LoRAアダプタを変更したい場合は、`adapter_repo_id`を別のリポジトリに変更します。
- 分散学習やDeepSpeedなどの高度な最適化オプションを利用する場合は、`TrainingArguments``DPOConfig`がサポートしている範囲で設定可能です。

## 注意点

- モデルやLoRAアダプタの使用には対応するライセンスや利用条件に従ってください。
- 大規模モデルを扱うため、メモリ不足エラーが発生する場合があります。その場合はバッチサイズやシーケンス長、LoRAパラメータなどを調整してください。

---