Views
No views yet
AutoModelForCausalLM pipeline:1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4model_id = "enet45/qwen2.5-7b-ja2zh-merged-v1.1"
5
6tokenizer = AutoTokenizer.from_pretrained(model_id)
7model = AutoModelForCausalLM.from_pretrained(
8 model_id,
9 torch_dtype=torch.bfloat16,
10 device_map="auto"
11)
12
13def translate_ja2zh(japanese_text, instruction="将以下日语字幕翻译成中文,文本可能存在识别错误,请根据语境修正后翻译。只输出中文。"):
14 messages = [
15 {"role": "system", "content": instruction},
16 {"role": "user", "content": japanese_text}
17 ]
18
19 # 使用 apply_chat_template 自动匹配训练模板
20 prompt = tokenizer.apply_chat_template(
21 messages,
22 tokenize=False,
23 add_generation_prompt=True
24 )
25
26 inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
27
28 outputs = model.generate(
29 **inputs,
30 max_new_tokens=128,
31 temperature=0.7,
32 top_p=0.9,
33 do_sample=True,
34 repetition_penalty=1.25,
35 eos_token_id=tokenizer.eos_token_id,
36 pad_token_id=tokenizer.pad_token_id or tokenizer.eos_token_id
37 )
38
39 # 只获取生成的回复部分
40 response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
41 # 字幕翻译建议取第一行,防止冗余输出
42 return response.strip().split('\n')[0]
43
44print(translate_ja2zh("君のことが好きだ。"))