Views
No views yet
1numpy
2numba
3torch
4transformers
5peft1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4model_path = "alfredplpl/plamo-3-nict-8b-magpie-lora"
5tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
6model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, device_map="cuda", dtype=torch.bfloat16)
7
8chat = [
9 {"role": "user", "content": "まどか☆マギカで一番好きなキャラクターを教えて下さい。"},
10]
11tokenized_input = tokenizer.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_tensors="pt").to(model.device)
12with torch.no_grad():
13 output = model.generate(
14 tokenized_input,
15 max_new_tokens=256,
16 do_sample=True,
17 top_p=0.95,
18 temperature=0.3
19 pad_token_id=tokenizer.pad_token_id,
20 eos_token_id=tokenizer.eos_token_id
21 )[0]
22print(tokenizer.decode(output))1<|plamo:bos|><|plamo:tag|>user<|plamo:msg|>まどか☆マギカで一番好きなキャラクターを教えて下さい。
2<|plamo:tag|>assistant<|plamo:msg|>「まどか☆マギカ」には多くの魅力的なキャラクターが登場しますが、特に人気のあるキャラクターとして「暁美ほむら」を挙げることができます。彼女は物語の重要な役割を果たし、まどかマギカの世界観を深く掘り下げるキャラクターです。ただし、これは個人の好みによるものなので、他のキャラクターもそれぞれ魅力的です。どのキャラクターが好きですか?それについてもっと詳しく話すことができますよ。<|plamo:eos|>1<|plamo:bos|><|plamo:tag|>user<|plamo:msg|>まどか☆マギカやPSYCHO-PASSを通じて虚淵玄は功利主義の観点から何を伝えたかったのでしょうか。
2<|plamo:tag|>assistant<|plamo:msg|>虚淵玄の作品は、しばしば複雑なテーマと深い哲学的考察を含んでいます。「まどか☆マギカ」と「PSYCHO-PASS」の両方において、彼は人間の本質、自由意志、そして社会の構造について深く掘り下げています。
3
4「まどか☆マギカ」では、虚淵玄は選択の自由とその結果としての責任について考察しています。物語は、魔法少女たちが自分たちの運命を変えるために戦う一方で、彼らの選択が他者にも大きな影響を与えるというジレンマを描いています。虚淵玄は、個人の選択が社会全体に与える影響や、その結果に対する責任について考えさせるメッセージを伝えています。
5
6一方、「PSYCHO-PASS」では、虚淵玄は人間の心の複雑さと、社会が個人の心をどのように制御しようとするかについて考察しています。この作品では、人々の心の状態が数値化され、社会が個人の心を管理しようとするシステムが描かれています。虚淵玄は、個人の自由意志と社会の規範との間のバランスや、個人の内面的な葛藤について深く掘り下げています。
7
8したがって、虚淵玄の作品は、人間の本質や社会の構造について深い洞察を提供し、視聴者や読者に自己反省を促しています。ただし、虚淵玄の作品は解釈の余地が大きく、視聴者や読者それぞれが独自の解釈を持つことができます。<|plamo:eos|>1# モデルの設定
2base_model: pfnet/plamo-3-nict-8b-base # HuggingFace上のモデル名
3model_type: AutoModelForCausalLM # モデルのロードに使用するクラス
4tokenizer_type: AutoTokenizer # トークナイザのロードに使用するクラス
5trust_remote_code: true # リモートのカスタムコードを信頼してモデルをロード
6
7load_in_8bit: false # 8bit量子化は使用しない
8load_in_4bit: true # 4bit量子化は使用
9strict: false # 重みの厳密な一致を要求しない(追加トークン等がある場合に許容)
10
11# データセットの設定
12datasets:
13 - path: llm-jp/magpie-sft-v1.0 # 使用するデータセット(Hugging Face上のデータセット名)
14 type: chat_template # 会話形式のデータセットを使用
15 chat_template: tokenizer_default
16 field_messages: conversations # 会話データが格納されたフィールド名
17 message_property_mappings: # メッセージ内のプロパティ名のマッピング
18 role: role # 役割(ユーザー/システム/アシスタント)を示すフィールド
19 content: content # メッセージ内容を示すフィールド
20 roles_to_train: ["assistant"] # 学習対象とする役割(アシスタントの発話のみ学習)
21 train_on_eos: last
22dataset_prepared_path: last_run_prepared # 前処理済みデータの保存先(キャッシュ用)
23
24# LoRAの設定
25adapter: qlora # LoRAを使用してファインチューニング
26lora_r: 32 # LoRAのランク(低ランク行列の次元)
27lora_alpha: 32 # LoRAのスケーリング係数
28lora_dropout: 0.05 # LoRA適用部分のドロップアウト率
29lora_target_modules: # LoRAを適用するモジュール(リスト形式)
30 - "mixer.qkv_proj"
31 - "mixer.o_proj"
32 - "mlp.gate_up_proj"
33 - "mlp.down_proj"
34
35# トレーニングの設定
36micro_batch_size: 4 # 各デバイスあたりのバッチサイズ
37gradient_accumulation_steps: 1 # 勾配を蓄積するステップ数(実質バッチサイズは micro_batch_size×この値)
38num_epochs: 1 # エポック数(データセットを繰り返す回数)
39learning_rate: 2e-4 # 学習率(初期の学習率)
40lr_scheduler: constant_with_warmup # 学習率スケジューラ
41optimizer: adamw_torch # Optimizer(AdamW)
42train_on_inputs: false # ユーザ発話部分は学習しない(アシスタントの回答部分のみ誤差計算)
43group_by_length: false # 同じ長さのシーケンスをグループ化しない
44sequence_len: 2048 # シーケンス長(コンテキスト長)
45pad_to_sequence_len: true # シーケンス長までパディングしてバッチを揃える
46bf16: auto # 学習でBrain Floating Point 16を自動使用(対応GPUなら有効化)
47fp16: false # 16-bit浮動小数点を直接指定しない(bf16を優先)
48gradient_checkpointing: true # 勾配チェックポイントを有効化(メモリ節約)
49save_steps: 500
50save_total_limit: 3
51
52# 出力の保存設定
53output_dir: ./output/plamo-3-nict-8b-lora # チェックポイントや最終モデルの出力先ディレクトリ