[笔记][大模型学习]10-llama3大模型本地调用

126 阅读2分钟

上次回顾

数据可视化: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)