Views
No views yet
1from transformers import pipeline
2
3question = "If you had a time machine, but could only go to the past or the future once and never return, which would you choose and why?"
4generator = pipeline("text-generation", model="None", device="cuda")
5output = generator([{"role": "user", "content": question}], max_new_tokens=128, return_full_text=False)[0]
6print(output["generated_text"])1@misc{vonwerra2022trl,
2 title = {{TRL: Transformer Reinforcement Learning}},
3 author = {Leandro von Werra and Younes Belkada and Lewis Tunstall and Edward Beeching and Tristan Thrush and Nathan Lambert and Shengyi Huang and Kashif Rasul and Quentin Gallou{\'e}dec},
4 year = 2020,
5 journal = {GitHub repository},
6 publisher = {GitHub},
7 howpublished = {\url{https://github.com/huggingface/trl}}
8}1!pip -q install "transformers>=4.44" "peft>=0.11" accelerate
2
3import torch
4from peft import PeftModel
5from transformers import AutoModelForCausalLM, AutoTokenizer
6
7BASE_ID = "Qwen/Qwen2.5-0.5B"
8ADAPTER_ID = "BeagleWorks/Qwen-Mail-Lora" # ←あなたのLoRA
9
10# 1) トークナイザ
11tok = AutoTokenizer.from_pretrained(BASE_ID, trust_remote_code=True)
12if tok.pad_token is None:
13 tok.pad_token = tok.eos_token # pad未設定エラー回避
14
15# 2) ベースモデル(FP16, 自動デバイス割当)
16base = AutoModelForCausalLM.from_pretrained(
17 BASE_ID,
18 trust_remote_code=True,
19 device_map="auto",
20 torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
21)
22
23# 3) LoRAアダプタを適用
24model = PeftModel.from_pretrained(base, ADAPTER_ID)
25model.eval()
26
27# 4) 生成(学習時のフォーマットに近いプロンプトを使う)
28prompt = """[指示]
29あなたはメール文面を整えるアシスタントです。以下の下書きを、件名/本文/TODO/署名に整理し、敬体(です・ます調)で自然な日本語に直してください。
30
31[下書き]
32明日の打ち合わせ、議題 進捗確認と次タスク。先方に資料送るの忘れた。山田さんにCC。
33
34[出力フォーマット]
35件名: <短い件名>
36本文:
37<整えた本文>
38TODO:
39- <TODO1>
40- <TODO2>
41署名:
42<署名>
43
44[回答]
45"""
46
47inputs = tok(prompt, return_tensors="pt").to(model.device)
48with torch.inference_mode():
49 out = model.generate(
50 **inputs,
51 max_new_tokens=400,
52 do_sample=True,
53 temperature=0.7,
54 top_p=0.9,
55 repetition_penalty=1.05,
56 eos_token_id=tok.eos_token_id,
57 pad_token_id=tok.pad_token_id,
58 )
59
60print(tok.decode(out[0], skip_special_tokens=True))