kazuHF's picture
Update README.md
e1dbacb verified
|
raw
history blame
8.48 kB
---
base_model: llm-jp/llm-jp-3-13b
tags:
- text-generation-inference
- transformers
- unsloth
- llama
- trl
license: apache-2.0
language:
- en
---
# Uploaded model
- **Developed by:** kazuHF
- **License:** apache-2.0
- **Finetuned from model :** llm-jp/llm-jp-3-13b
This llama model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)
# kazuHF/llm-jp-3-13b-it2_loraの概要
1. モデル概要
- ベースモデル: llm-jp/llm-jp-3-13b (https://huggingface.co/llm-jp/llm-jp-3-13b)
- 用途: 日本語によるQ&A形式の文章生成
- アーキテクチャ: FrameworkやLibraryとしてはPyTorch、Transformers、Unsloth、trl、LoRA、xformers、Flash Attentionなどを利用。UnslothはFine TuningやInferenceを高速化しメモリも削減する。llm-jp/llm-jp-3-13bを4bitで量子化するLoRAでロードし、SFTで事後学習を行った。
2. 事後学習の詳細
- 事後学習用データにichikara-instruction-003-001-1.jsonを必要な申請を行って利用した。
- Epoch数 1, バッチサイズ 2, 学習率 2e-4
- Google Colaboratory Pro上のL4/A100で学習
3. モデルの入出力
- 学習における入力のkeyは “text”、出力のkeyは “output”
- 推論による出力のkeyは “task_id”, “input”, “output”
4. 推論方法
- Hugging FaceのIDとして、
 model_id = "llm-jp/llm-jp-3-13b”, adapter_id = "kazuHF/llm-jp-3-13b-it2_lora"
と指定し、
 FastLanguageModel.from_pretrained( … model_id … )
で元のモデルをロードする。そして
 model = PeftModel.from_pretrained( … adaptor_id … )
によって元のモデルとLoRAのアダプターを結合し、そのモデルのモードを
 FastLanguageModel.for_inference(model)
によって推論モードに変更する。
入力を”””###\n 指示 入力 \n### 回答\n”””の形式にしてトークン化し、
 model.generate( “input_ids”: …, “attention_mask”: …, …)
によってpredictionを行い、それをdecodeして出力とする。
5. ライセンス
- ベースモデル: 国立情報学研究所 大規模言語モデル研究開発センターが公開しているllm-jp/llm-jp-3-13b。Apache 2.0 のライセンスを継承する。
- 事後学習に用いたデータ: 理化学研究所 革新知能統合研究センター 言語情報アクセス技術チームが公開している ichikara-instruction-003-001-1.json 。CC-BY-NC-SAのライセンスを継承する。
6. 問題点や改善点
- promptに対して適切に答える場合もあるが、回答が短かったり、答えられない場合も散見されるため、更なる学習データの蓄積と事後学習を要する。
7. 謝辞
- 東京大学 松尾・岩澤研究室主催の大規模言語モデルDeep Learning応用講座 2024|Fall を受講することで本モデルが作製できた。同講座に関係する方々並びに同講座を受講された方々に深謝する。
# 推論方法の詳細
◆ Google Colaboratory上のL4での推論
1. Google Colaboratory上で、サンプルコードの
Model_Inference_Template_20241127.jpynb
を開く。
◇ 環境設定
1. Runtimeで、Hardware acceleratorをL4 GPUにする。
2. ノートブックをGoogle driveに保存するため、Google driveにマウントする。
3. CodeのセルでGenerateをクリックして「ドライブに接続」というPromptをGeminiに入れると、マウントに必要なセルを書いてくれるのでそれを評価する。
4. 「接続しているGPUの表示」とGeminiに聞いて、23GBのL4に接続していることを確認する。
5. /contentに、次のファイルをupload.
elyza-tasks-100-TV_0.json
6. 提供されたコードでunsloth, torch, peftをインストール。(37sec)
◇ 推論
7. FastLanguageModel, PeftModelなどのインポート。(22sec)
8. ベースモデルと作製したモデルのIDの貼り付け。
9. 事後学習の際に使用したHugging FaceのTokenの指定。
10. FastLanguageModelのインスタンス化。下のモデルとTokenizerを読み込む。
 途中で、Grant accessをクックする。(3min)
11. 元のモデルにQLoRAのadaptorを統合。tokenにHugging FaceのTokenを指定する。(8sec)
12. elyza-tasks-100-TV_0.jsonlを読み込む。
13. adaptorをつけたモデルでタスクの推論を行う。(6min)
14. 推論結果をjsonlで保存。
# ◆ 事後学習の詳細
◆ Hugging Faceでwrite権限のあるtokenの取得
1. 自身のHugging Faceにlog inし、自身のProfileのSettingに入り、Access Tokenに入る。
2. Create New Tokenをクリックし、Token type からWriteを選択し、Token nameを設定してから、Create tokenをクリックする。tokenを保存しておく。
◆ 事後学習のためのデータの入手
1. LLMのための日本語インストラクションデータ公開ページに入る。( 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%e4%bd%9c%e6%88%90/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/ )
2. ダウンロードのための必要事項記入フォームに記入。(https://docs.google.com/forms/d/1CeYoFrMJnCFbH71RGxOaAIDGDBofUSAEdEcmiLR-Uko/viewform?edit_requested=true)
3. LLMのためのインストラクションデータのダウンロードのURLを入手
https://drive.google.com/file/d/1U_GQ43hc2EYTKO-gvswooR0UY12alB0z/view?usp=drive_link
4. このリンクから、Distribution20241221_allというフォルダの中にある
ichikara-instruction-003-001-1.json
などのjsonファイルのデータが入手できる。これをモデルの事後学習であるSFTやRLHFのための学習データとして利用する。
◆ Google Colaboratory上のL4での事後学習
1. Google Colaboratory上で、サンプルコードの
LoRA_template_unsloth_20241127.jpynb
を開く。
◇ 環境設定
1. Runtimeで、Hardware acceleratorをL4 GPUにする。
2. ノートブックをGoogle driveに保存するため、Google driveにマウントする。
3. CodeのセルでGenerateをクリックして「ドライブに接続」というPromptをGeminiに入れると、マウントに必要なセルを書いてくれるのでそれを評価する。
4. 「接続しているGPUの表示」とGeminiに聞いて、23GBのL4に接続していることを確認する。
5. /contentに、次の二つのファイルをupload.
elyza-tasks-100-TV_0.json
ichikara-instruction-003-001-1.json
6. 既に書かれているcodeによってuslothをインストールする。(25sec)
7. torchとxformersのupgrade (7sec)
(ipwidgetsのupgradeはskip)
8. Flash-attentionのinstall (20sec)
◇ 事前学習モデルのロード
1. Write権限のあるTokenをHF_TOKENのところに入力して評価する。
2. llm-jp/llm-jp-3-13bというモデルを4bit量子化したLoRAでloadする。(2min)
3. Notebook does not have secret accessというwindowが出たらGrant accessをクリック
4. 事後学習用のデータであるichikara-instruction-003-001-1.jsonをloadする。(0sec)
5. 学習時のプロンプトのフォーマットの定義 (0sec)
6. データの確認 (0sec) ###指示 と ###回答 とからなる。
◇ モデルの事後学習
1. SFTの設定 (1sec)
2. GPUのメモリの確認: GPU NVIDIA L4 Max memory 22.168GB, 8.709GBを使用中
3. 学習の実行 (23min) Training lossは、2.22から1.90まで低下した。
◇ モデルによる推論
1. 課題であるelyza-tasks-100-TV_0.jsonを読み込む。(0sec)
2. 事後学習したモデルで、タスクを一つ一つ推論する。(6min)
3. 推論結果をjsonで保存する。
4. LoRAのアダプタをHugging Faceにuploadする。(22sec)
5. Hugging FaceのProfileにuploadされているモデルをクリックする。
6. Files and versionsをクリックし、README.mdを開き、editをクリックして編集する。
7. Comment changes to mainをクリックして保存する。