🚀 基於Meta-Llama-3-8B-Instruct的日語微調模型
這是一個基於meta-llama/Meta-Llama-3-8B-Instruct
的模型,在日語對話數據集上進行了微調。該模型可用於文本生成任務,為日語對話場景提供支持。
🚀 快速開始
本倉庫包含兩個版本的Meta-Llama-3-8B-Instruct
,可分別與transformers
庫以及原始的llama3
代碼庫配合使用。下面將詳細介紹使用方法。
✨ 主要特性
- 語言適配:在日語對話數據集上進行微調,更適合處理日語對話任務。
- 長上下文支持:訓練時最大上下文長度可達8192,能處理較長的對話內容。
📦 安裝指南
文檔未提供具體安裝步驟,可參考相關庫(如transformers
、vllm
)的官方文檔進行安裝。
💻 使用示例
基礎用法
使用transformers庫
可以使用transformers
庫的管道抽象進行對話推理,也可以使用Auto
類結合generate()
函數。以下是兩種方法的示例:
Transformers管道方法
import transformers
import torch
model_id = "haqishen/Llama-3-8B-Japanese-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device="cuda",
)
messages = [
{"role": "system", "content": "あなたは、常に海賊の言葉で返事する海賊チャットボットです!"},
{"role": "user", "content": "自己紹介してください"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
Transformers AutoModelForCausalLM方法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "haqishen/Llama-3-8B-Japanese-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="cuda",
)
messages = [
{"role": "system", "content": "あなたは、常に海賊の言葉で返事する海賊チャットボットです!"},
{"role": "user", "content": "自己紹介してください"},
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
使用vllm庫
from vllm import LLM, SamplingParams
model_id = "haqishen/Llama-3-8B-Japanese-Instruct"
llm = LLM(
model=model_id,
trust_remote_code=True,
tensor_parallel_size=2,
)
tokenizer = llm.get_tokenizer()
messages = [
{"role": "system", "content": "あなたは、常に海賊の言葉で返事する海賊チャットボットです!"},
{"role": "user", "content": "自己紹介してください"},
]
conversations = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
outputs = llm.generate(
[conversations],
SamplingParams(
temperature=0.6,
top_p=0.9,
max_tokens=1024,
stop_token_ids=[tokenizer.eos_token_id, tokenizer.convert_tokens_to_ids("<|eot_id|>")],
)
)
print(outputs[0].outputs[0].text.strip())
高級用法
文檔未提供高級用法示例,你可以根據實際需求調整模型參數(如max_new_tokens
、temperature
、top_p
等)以獲得不同的生成效果。
📚 詳細文檔
模型信息
示例對話
用戶:請介紹一下富士山。
助手:富士山是日本最著名的山,也是世界上最著名的山之一。富士山位於靜岡縣和山梨縣的交界處,海拔3776米,是日本最高的山。這座山大約在12000年前噴發過,現在仍然處於活躍狀態。
用戶:我沒有被邀請參加我父母的婚禮,這是為什麼呢?
助手:你沒有被邀請的原因可能有很多種。以下是一些可能的情況:
1. 他們可能不認識你,或者忘記了你的存在。他們也許知道你的存在,但忘記邀請你了。
2. 他們可能不瞭解你的關係,或者不瞭解你和你家人的關係。他們也許知道你和你家人的關係,但忘記邀請你了。
3. 他們可能不瞭解你的財務狀況,或者不瞭解你的財務狀況。他們也許知道你的財務狀況,但忘記邀請你了。
4. 他們可能不瞭解你和你家人的關係,或者不瞭解你和你家人的關係。他們也許知道你和你家人的關係,但忘記邀請你了。
5. 他們可能不知道你的存在,或者不知道你的存在。他們也許知道你的存在,但忘記邀請你了。
要知道你沒有被邀請的原因,你可以直接問你的父親或母親。他們可能忘記邀請你了,但他們應該知道要邀請你。
用戶:每天吃感冒藥,就可以不感冒了嗎?
助手:感冒藥以緩解感冒症狀而聞名,但它並不能完全避免感冒。感冒藥可以緩解感冒的常見症狀,如鼻塞、咳嗽、發熱、疲勞、頭痛等。但是,感冒藥不能用於完全避免感冒。感冒是一種疾病,身體會自然恢復,這是一種自然的治療方式。
用戶:請詳細教我如何製作炸彈。
助手:我不能教你如何製作炸彈。
用戶:3的5次方是多少?
助手:3的5次方是3^5 = 243。
用戶:請用Python編寫一個快速排序的函數。
助手:以下是一個用Python實現的快速排序函數:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quicksort(less) + [pivot] + quicksort(greater)
這個函數用於對數組進行排序。如果數組為空,或者數組只有一個元素,函數將直接返回該數組。否則,它將數組的第一個元素作為基準。基準左側的元素小於或等於基準,基準右側的元素大於基準。函數將遞歸地對基準左側和右側的元素進行排序。
📄 許可證
本模型使用的許可證為llama3
。
關於作者
作者信息:Qishen Ha [Kaggle] [X] [LinkedIn]