聊聊Llama2-Chinese中文大模型
轉載請注明出處:https://www.cnblogs.com/zhiyong-ITNote
基本簡述
Llama2-Chinese 大模型:由清華、交大以及浙大博士團隊領銜開發;基于200B中文語料庫結合Llama2基座模型訓練。
Llama中文社區:國內最領先的開源大模型中文社區。
Atom大模型:為了區別于原始的Llama2模型,后續中文Llama2大模型,改名為Atom大模型。
模型獲取地址:Huggingface
GITHUB地址:GITHUB
模型信息
Huggingface上Llama-Chinese大模型集合:
查看下Llama2-Chinese-7b-Chat模型的config.json:
查看下Atom-7B-Chat的config.json:
簡單看看區別,官方說明:
- Atom模型:基于Llama2-7B采用大規模的中文數據進行了繼續預訓練。
- Llama2-Chinese:由于Llama2本身的中文對齊較弱,我們采用中文指令集,對meta-llama/Llama-2-7b-chat-hf進行LoRA微調,使其具備較強的中文對話能力。
總結來說,Atom模型時重新預訓練的;而Llama2-Chinese模型是微調后的。因此如果想要比較完善更全面的中文模型,建議是用Atom模型。
轉載請注明出處:https://www.cnblogs.com/zhiyong-ITNote
調用說明
根據 官方文檔 在命令行調用API:
from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-2-7b-chat-hf',device_map='auto',torch_dtype=torch.float16,load_in_8bit=True)
model =model.eval()
tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-2-7b-chat-hf',use_fast=False)
input_ids = tokenizer(['<s>Human: 介紹一下中國\n</s><s>Assistant: '], return_tensors="pt",add_special_tokens=False).input_ids.to('cuda')
generate_input = {
"input_ids":input_ids,
"max_new_tokens":512,
"do_sample":True,
"top_k":50,
"top_p":0.95,
"temperature":0.3,
"repetition_penalty":1.3,
"eos_token_id":tokenizer.eos_token_id,
"bos_token_id":tokenizer.bos_token_id,
"pad_token_id":tokenizer.pad_token_id
}
generate_ids = model.generate(**generate_input)
text = tokenizer.decode(generate_ids[0])
print(text)
分析來看,調用的是基于Llama2微調后的模型,而不是預訓練的模型。暫時也沒有看到Atom預訓練模型調用的資料。在這里補一下:
# 轉載請注明出處:https://www.cnblogs.com/zhiyong-ITNote
from transformers import AutoTokenizer, LlamaForCausalLM
model = LlamaForCausalLM.from_pretrained('mnt/data/zhangzheng/data/AtoM-7B/checkpoint-56000',device_map='auto',torch_dtype=torch.float16,load_in_8bit=True)
model =model.eval()
tokenizer = AutoTokenizer.from_pretrained('mnt/data/zhangzheng/data/AtoM-7B/checkpoint-56000',use_fast=False)
input_ids = tokenizer(['<s>Human: 介紹一下中國\n</s><s>Assistant: '], return_tensors="pt",add_special_tokens=False).input_ids.to('cuda')
generate_input = {
"input_ids":input_ids,
"max_new_tokens":512,
"do_sample":True,
"top_k":50,
"top_p":0.95,
"temperature":0.3,
"repetition_penalty":1.3,
"eos_token_id":tokenizer.eos_token_id,
"bos_token_id":tokenizer.bos_token_id,
"pad_token_id":tokenizer.pad_token_id
}
generate_ids = model.generate(**generate_input)
text = tokenizer.decode(generate_ids[0])
print(text)
其實就是根據huggingface上的模型config.json文件的_name_or_path屬性值重新配置模型名稱即可。
LlamaForCausalLM
這個類是Llama2模型對接到transformers庫的銜接類。由config.json的architectures屬性值指定了。而且在官方文檔有API說明.
對應在github上的實現:
從之前ChatGLM-6B的源碼結構分析來看,Llama2的關鍵源碼也是這個llama文件夾下的這些文件,尤其是modeling_llama.py文件。
總結
從目前官方提供的文檔等信息來看,資料還是比較少的,尤其是Atom模型的信息及示例等。這也需要我們在自身學習的過程中幫助社區不斷地完善相關信息,反哺社區和中文大模型的發展。
轉載請注明出處:https://www.cnblogs.com/zhiyong-ITNote
總結
以上是生活随笔為你收集整理的聊聊Llama2-Chinese中文大模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【scikit-learn基础】--『监
- 下一篇: Json Schema介绍 和 .net