上次回顾
数据可视化:tensorboard
tensorboard --logdir "logdir/xxxxx"
模型训练时候的加速方法:混合精度运算
- Hugging Face 模型微调训练
GPT2-中文生成模型定制化内容输出
model.eval() 测试的时候,一般会调用这个。但是如果是transformers加载的,就不要调用这个。pyTorch是调用这个。
后处理技术。
AI创作, ----(程序控制)----> 结果
AI生成有时候会生成一些不需要的内容,如符号
- 语料数据中有这些符号
- 我们用的字典中就有符号,有概率出符号
如果生成诗词,需要做后处理
一般情况下,都是需要将大模型结合自己的需求,做实际的应用。
对于大模型而言,有时候微调不一定有效。有可能更差。往往针对超大规模以上的(百亿参数以上10B). 因为一般情况下,很难找到这么大的数据。
llama3 meta于2024年4月18日开源的LLM,目前开放了8B和32B两个版本。支持最大为8192个token.
下载本地的大语言模型,看不到vocab文件,集成进了模型中。
float32 float16
from transformers import AutoModelForCausalLM, AutoTokenizer
DEVICE = "cuda"
# 加载本地模型路径为该模型配置文件所在的根目录
model_dir = "E:\caches\modelscope\LLM-Research\Llama-3___2-1B-Instruct"
# 使用transformer加载模型 torch_dtype:float32,float16,如果知道就选,可以自动选择
model = AutoModelForCausalLM.from_pretrained(model_dir, torch_dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_dir)
# 调用模型
# 定义提示词
#prompt = "你好,请介绍一下你自己。"
prompt = "你好,你叫什么名字?你是由谁创造的?"
# 将提示词封装成message
message = [
{"role":"system", "content":"You are a helpful assistant system"},
{"role":"user", "content":prompt}
]
# 使用分词器的 apply_chat_template()方法将上面定义的消息列表进行转换
# tokenize=False: 表示此时不进行令牌化处理
text = tokenizer.apply_chat_template(message, tokenize=False, add_generation_prompt=True)
# 将处理后的文本令牌化,并转换为模型的输入张量
model_inputs = tokenizer([text], return_tensors="pt").to(DEVICE)
# 输入模型得到输出
generated = model.generate(model_inputs.input_ids, max_new_tokens=512)
print(generated)
response = tokenizer.batch_decode(generated, skip_special_tokens=True)
print(response)