# llm-jp-3-13b-finetune 使用方法ガイド ## モデル概要 このモデルは、llm-jp/llm-jp-3-13bをベースにLoRA (Parameter-Efficient Fine-Tuning)で学習された公開モデルです。 ## 必要な環境 - Python 3.10以上 - CUDA対応GPU(推奨) - 必要なライブラリ: - transformers - bitsandbytes - accelerate - torch - peft ## インストール手順 ```bash # 必要なライブラリのインストール pip install -U pip pip install -U transformers pip install -U bitsandbytes pip install -U accelerate pip install -U peft pip install -U torch ``` ## 基本的な使用方法 ### 1. シンプルな使用方法 ```python from transformers import pipeline # パイプラインの作成 generator = pipeline( "text-generation", model="harataku/llm-jp-3-13b-finetune", device=0 # GPU使用 ) # テキスト生成 prompt = """### 指示 好きな食べ物について教えてください ### 回答 """ response = generator(prompt, max_length=200, num_return_sequences=1) print(response[0]['generated_text']) ``` ### 2. 詳細な設定による使用方法 ```python from transformers import ( AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig ) import torch # モデルの設定 model_id = "harataku/llm-jp-3-13b-finetune" # 量子化の設定 bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16, ) # モデルとトークナイザーの読み込み model = AutoModelForCausalLM.from_pretrained( model_id, quantization_config=bnb_config, device_map="auto" ) tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) # 推論用の関数 def generate_response(input_text): prompt = f"""### 指示 {input_text} ### 回答 """ tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device) attention_mask = torch.ones_like(tokenized_input) with torch.no_grad(): outputs = model.generate( tokenized_input, attention_mask=attention_mask, max_new_tokens=100, do_sample=False, repetition_penalty=1.2, pad_token_id=tokenizer.eos_token_id )[0] response = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True) return response # 使用例 input_text = "好きな食べ物について教えてください" response = generate_response(input_text) print(response) ``` ## パラメータの説明 ### モデル生成時のパラメータ - `max_new_tokens`: 生成する最大トークン数(デフォルト: 100) - `do_sample`: サンプリングを行うかどうか(デフォルト: False) - `repetition_penalty`: 繰り返しを抑制するためのペナルティ(デフォルト: 1.2) ### 入力フォーマット 入力は以下の形式で行います: ``` ### 指示 [入力テキスト] ### 回答 ``` ## トラブルシューティング 1. メモリエラーが発生する場合: ```python # より少ないメモリ使用量の設定 bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.float16 # bfloat16からfloat16に変更 ) ``` 2. GPUが利用できない場合: ```python # CPUでの実行設定 model = AutoModelForCausalLM.from_pretrained( model_id, device_map="cpu", low_cpu_mem_usage=True ) ``` ## 注意事項 - 4bit量子化を使用しているため、メモリ使用量は効率的ですが、推論速度とのトレードオフがあります - GPU環境での実行を推奨します - 長い入力テキストの場合は、`max_new_tokens`の値を適宜調整してください ## ライセンス 本モデルはベースモデル(llm-jp/llm-jp-3-13b)のライセンスを継承しています。また、学習データとして使用したichikara-instructionデータセットのライセンス(CC-BY-NC-SA)も適用されます。 ## 引用 学習データについて: ``` 関根聡, 安藤まや, 後藤美知子, 鈴木久美, 河原大輔, 井之上直也, 乾健太郎. ichikara-instruction: LLMのための日本語インストラクションデータの構築. 言語処理学会第30回年次大会(2024) ``` ## 更新履歴 - 2024/03/XX: モデルをpublic設定に変更 - 2024/03/XX: READMEを更新し、より簡単な使用方法を追加