togepi55/llm-jp-3-13b-it
Model Card for Model ID
- ベースモデル : llm-jp/llm-jp-3-13b
- 対応言語 : English, Japanese
- ライセンス : apache-2.0
注意
- プロンプトは次の形式でのみ学習しています。
- モデルはアダプターのみですので,利用する際はベースモデルのllm-jp/llm-jp-3-13bも読み込むようにしてください。
~~~: プロンプトの形式 """ <s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい
指示:
{instruction}
応答:
""" ~~~
テキスト生成のサンプルコード
~~~python import torch from transformers import ( AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, ) from peft import LoraConfig, PeftModel from transformers import TextStreamer
BASEMODEL = "llm-jp/llm-jp-3-13b" PEFTMODEL = "togepi55/llm-jp-3-13b-it"
tokenizer = AutoTokenizer.frompretrained(PEFTMODEL) bnbconfig = BitsAndBytesConfig( loadin4bit=True, bnb4bitcomputedtype=torch.float16, bnb4bitquanttype="nf4", bnb4bitusedouble_quant=False, )
basemodel = AutoModelForCausalLM.frompretrained( BASEMODEL, devicemap="auto", quantizationconfig=bnbconfig, torchdtype="auto", trustremote_code=True, )
model = PeftModel.frompretrained(basemodel, PEFT_MODEL)
streamer = TextStreamer(tokenizer, skipprompt=True, skipspecial_tokens=True)
instruction = "東京は日本の"
prompt = f"<s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい\n\n### 指示:\n{instruction}\n\n### 応答:\n" print(prompt) modelinput = tokenizer(prompt, returntensors="pt").to(model.device) inputids = modelinput["input_ids"]
model.eval() with torch.nograd(): result = model.generate( inputids, maxnewtokens=300, attentionmask = modelinput.attentionmask, padtokenid=tokenizer.padtokenid, eostokenid=tokenizer.eostokenid, dosample=False, streamer=streamer, repetitionpenalty=1.02, ) print("----"*20) del inputids torch.cuda.empty_cache() ~~~
Bias, Risks, and Limitations
RLHF,DPOを実施していないため不適切な表現が出力される可能性があります。
Training Details
指示チューニングデータとして下記のものを利用しました。
- ichikara-instruction-003-001-1.json
- ichikara-instruction-003-002-1.json
- elyza/ELYZA-tasks-100
ライセンス
- ichikara-instructionデータセットのライセンスはcc-by-nc-sa,ELYZA-tasks-100のライセンスはcc-by-sa-4.0になっております。
SFTの概要
- 4bit量子化
- LoRAによるSFT
- learning_rate = 2e-4
- optim="adamwtorchfused"
- lrschedulertype="cosine"
- weight_decay=0.01
