如何在Windows 11本地通过Python调用本地Llama 2 7B模型?
本地Llama-2-7B-chat模型交互代码
前置依赖安装
如果你的conda环境还没装必要库,先执行:
pip install transformers accelerate sentencepiece
如果显存不足,可额外安装bitsandbytes启用8bit/4bit量化:pip install bitsandbytes
核心交互代码
替换代码中的LOCAL_MODEL_PATH为你存放checklist.chk、consolidated.00.pth、params.json的文件夹路径:
import torch from transformers import AutoTokenizer, AutoModelForCausalLM # 本地模型路径,替换为你的实际路径 LOCAL_MODEL_PATH = "./llama-2-7b-chat" # 加载tokenizer,Llama需要指定trust_remote_code tokenizer = AutoTokenizer.from_pretrained(LOCAL_MODEL_PATH, trust_remote_code=True) tokenizer.pad_token = tokenizer.eos_token # 设置pad token,避免报错 # 加载模型,自动分配到CUDA;显存不足时可添加load_in_8bit=True或load_in_4bit=True model = AutoModelForCausalLM.from_pretrained( LOCAL_MODEL_PATH, trust_remote_code=True, torch_dtype=torch.float16, # 用float16节省显存,CUDA支持的话优先用 device_map="auto" ) def chat_with_model(prompt): # Llama-2 chat有固定的prompt格式,必须严格遵循 formatted_prompt = f"<s>[INST] {prompt} [/INST]" inputs = tokenizer(formatted_prompt, return_tensors="pt").to(model.device) # 生成回答,可根据需求调整参数 outputs = model.generate( **inputs, max_new_tokens=512, # 最多生成的token数 temperature=0.7, # 控制生成随机性,越低越保守 top_p=0.9, do_sample=True, eos_token_id=tokenizer.eos_token_id ) # 解码并返回结果,去掉原始prompt部分 response = tokenizer.decode(outputs[0], skip_special_tokens=True).split("[/INST]")[-1].strip() return response # 示例交互循环 print("输入'quit'退出对话") while True: user_input = input("你: ") if user_input.lower() == "quit": break response = chat_with_model(user_input) print(f"Llama-2: {response}")
关键说明
- prompt格式:Llama-2 chat模型要求严格使用
<s>[INST] 你的问题 [/INST]格式,否则生成效果会异常。 - 显存优化:如果你的GPU显存不足(比如小于16G),可以在
from_pretrained中添加load_in_8bit=True(需安装bitsandbytes),能大幅降低显存占用。 - 参数调整:
max_new_tokens控制回答长度,temperature控制随机性,可根据需求自行修改。
内容的提问来源于stack exchange,提问作者lutz
相关产品推荐
相关产品推荐

