Views
No views yet
google/gemma-2-9b-it をベースにLoRAでファインチューニングされたモデルです。1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3
4# ベースモデルとトークナイザーを読み込み
5base_model = AutoModelForCausalLM.from_pretrained(
6 "google/gemma-2-9b-it",
7 torch_dtype="auto",
8 device_map="auto",
9 attn_implementation="eager", # Gemma推奨
10 trust_remote_code=True
11)
12tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b-it")
13
14# LoRAアダプターを適用
15model = PeftModel.from_pretrained(base_model, "eyepyon/rcgemma2_9b_it-finetuned")
16
17# 推論
18def generate_response(context, question):
19 input_text = f"### コンテキスト:\n{context}\n\n### 質問:\n{question}\n\n### 回答:\n"
20 inputs = tokenizer(input_text, return_tensors="pt")
21
22 # GPUに移動
23 if torch.cuda.is_available():
24 inputs = {k: v.to(model.device) for k, v in inputs.items()}
25
26 with torch.no_grad():
27 outputs = model.generate(
28 **inputs,
29 max_length=512,
30 do_sample=True,
31 temperature=0.7,
32 top_p=0.9,
33 pad_token_id=tokenizer.eos_token_id
34 )
35
36 response = tokenizer.decode(outputs[0], skip_special_tokens=True)
37 if "### 回答:" in response:
38 response = response.split("### 回答:")[-1].strip()
39 return response
40
41# 使用例
42context = "人工知能は機械学習技術を使用してデータから学習します。"
43question = "機械学習の特徴は何ですか?"
44answer = generate_response(context, question)
45print(answer)### コンテキスト:
[背景情報やコンテキスト]
### 質問:
[ユーザーの質問]
### 回答:
[期待される回答]attn_implementation="eager"を使用してください