AutoModelForCausalLM.from_pretrained 下载 DeepSeek-R1-Distill-Qwen-1.5B 模型时报错 KeyError: ‘qwen2‘ 的解决办法

 使用python本地部署DeepSeek。

model = AutoModelForCausalLM.from_pretrained(model_name) 

运行到上述代码时报错:KeyError: ‘qwen2‘

问题原因

这个错误的原因是 transformers 版本不对。合适的版本为:transformers >= 4.37.0。而 python3.7 无法支持到这样高的 transformers 版本。

 解决办法

到 Python 官网 Welcome to Python.org 下载较新版本的 Python,这里推荐 3.8、3.9、3.10 版本。

安装完 python 后,重新安装 transformers

pip install transformers

然后使用命令查看 transformers 版本

pip show transformers

然后执行 DeepSeek 相关代码,完美运行!

解决问题之后,心情美美哒~O(∩_∩)O~

开心的时候就想分享福利:领券网

<think>好的,我现在需要帮助用户解决如何修改api_chatglm.py脚本以适配和调用从modelscope下载DeepSeek-R1-Distill-Qwen-7B大模型的问题。首先,我要理解用户的需求。用户之前可能在使用ChatGLM的API脚本,现在想切换到这个DeepSeek模型,但需要调整脚本使其兼容。 首先,我应该回顾用户提供的引用内容。引用[1]和[2]提到了使用vLLM启动服务,特别是Docker命令和参数,比如模型路径、端口设置等。这可能意味着用户已经部署了vLLM服务,现在想通过修改API脚本来调用这个服务,而不是直接修改模型加载部分的代码。 接下来,我需要分析api_chatglm.py的结构。通常,这类脚本会有几个关键部分:模型加载、API请求处理、参数设置等。由于用户提到的是调用已部署的模型服务,可能不需要修改模型加载部分,而是调整API请求的端点、模型名称以及可能的参数。 然后,我需要考虑DeepSeek-R1-Distill-Qwen-7B的具体要求。比如,它是否兼容OpenAI的API格式?根据引用[1]中的命令使用了--served-model-name参数,这可能意味着服务端期望特定的模型名称,需要在请求中指定。此外,模型的最大输入长度(max-model-len)是2048或4096,这可能会影响请求的max_tokens参数设置。 另外,用户提到从modelscope下载模型,但引用中的部署使用的是vLLM,所以可能用户已经将模型下载到本地并通过vLLM部署,现在需要调整API脚本指向这个本地服务。因此,修改的重点应该是API的base_url和model参数,确保指向正确的本地端口和模型名称。 可能还需要处理身份验证,如果vLLM服务没有设置API密钥,可能需要移除相关代码。此外,调整请求体中的参数,如temperature、top_p等,以适应DeepSeek模型的推荐配置。 最后,测试步骤也很重要,比如发送测试请求,检查返回结果是否符合预期,处理可能的错误,如连接问题或参数不匹配。 总结步骤:修改API端点地址,调整模型名称,更新请求参数,处理身份验证,调整数据处理部分,并进行测试验证。需要确保用户正确部署了vLLM服务,并且脚本中的配置与服务端参数一致,比如端口和模型路径。</think>### 修改 `api_chatglm.py` 适配 DeepSeek-R1-Distill-Qwen-7B 的步骤 #### 1. **确认模型服务部署状态** 根据引用[2],需确保已通过以下命令成功启动vLLM服务: ```bash docker run --runtime nvidia --gpus all -p 9000:9000 -v /data/model/DeepSeek-R1-Distill-Qwen-7B:/DeepSeek-R1-Distill-Qwen-7B -it --rm vllm/vllm-openai:latest --model /DeepSeek-R1-Distill-Qwen-7B --host 0.0.0.0 --port 9000 ``` 服务地址为 `http://localhost:9000/v1`,模型名称 `served-model-name` 默认为 `DeepSeek-R1-Distill-Qwen-7B`[^2]。 #### 2. **修改API请求地址** ```python # 原ChatGLM配置 # API_BASE = "http://localhost:8000/v1" # 修改为vLLM服务地址 API_BASE = "http://localhost:9000/v1" # 注意端口号与docker映射一致[^2] ``` #### 3. **调整模型标识符** ```python # 原ChatGLM模型名称 # MODEL_NAME = "chatglm3-6b" # 替换为DeepSeek模型标识 MODEL_NAME = "DeepSeek-R1-Distill-Qwen-7B" # 需与--served-model-name参数一致[^1] ``` #### 4. **更新请求参数** ```python def generate_response(prompt): headers = { "Content-Type": "application/json", # 若服务端未启用API密钥可删除该行 # "Authorization": f"Bearer {API_KEY}" } data = { "model": MODEL_NAME, "messages": [{"role": "user", "content": prompt}], "temperature": 0.7, "top_p": 0.9, "max_tokens": 2048 # 不超过docker启动设置的--max-model-len[^2] } response = requests.post(f"{API_BASE}/chat/completions", headers=headers, json=data) return response.json()["choices"][0]["message"]["content"] ``` #### 5. **处理模型特殊格式** DeepSeek-R1可能需要特定的prompt模板: ```python # 在prompt构造中添加系统指令 def format_prompt(user_input): return f"<|system|>你是一个智能助手</s>\n<|user|>{user_input}</s>\n<|assistant|>" ``` #### 6. **验证服务连通性** ```python # 测试代码 if __name__ == "__main__": test_query = "解释量子纠缠现象" try: print(generate_response(format_prompt(test_query))) except KeyError as e: print("响应格式不兼容,需检查错误日志:", e) except ConnectionError: print("服务未启动,请确认docker容器状态[^2]") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜-喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值