主流开源LLM(Qwen、ChatGLM等)的本地化部署

📅 2026/6/30 23:13:39
主流开源LLM(Qwen、ChatGLM等)的本地化部署
一、环境准备1. 先下载conda(或者Anaconda、Miniconda)2. 在下载目录进入命令提示符(地址栏输入CMD)3. 运行自带的激活脚本.\Scripts\activateE:\anaconda就会变成(base) E:\anaconda现在输入conda --version可以验证版本(base) E:\anacondaconda --version conda 24.9.24. 创建LLM 专用环境# 1. 创建名为 llm_env 的新环境指定 Python 3.10 conda create -n llm_env python3.10 -y # 2. 激活新创建的环境。第二次进入时运行自带的激活脚本后直接运行这条命令进入环境。 conda activate llm_env激活后命令提示符会从(base)变成(llm_env)表示你现在位于独立的环境中。5. 安装依赖库1 安装PyTorchpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118验证 PyTorch 和 CUDA 是否可用先输入python进入python交互环境再逐行输入以下代码importtorchprint(torch.__version__)print(torch.cuda.is_available())print(torch.cuda.get_device_name(0))如果第一行就报错(llm_env) E:\anacondapython Python 3.12.7 | packaged by Anaconda, Inc. | (main, Oct 4 2024, 13:17:27) [MSC v.1929 64 bit (AMD64)] on win32 Type help, copyright, credits or license for more information.说明你的 python 指向的是 Python 3.12.7但 PyTorch 我们刚刚是装在 Python 3.10 的环境里的这时候先输入exit()退出再用完整路径强制调用E:\anaconda\envs\llm_env\python.exe2 安装部署 LLM 必需的库pip install transformers accelerate bitsandbytes scipy sentencepiece安装完成后就可以开始下载并运行模型了。二、模型获取1.Qwen.在方便的地方比如桌面创建一个名为 test_qwen.py 的Python文件内容如下fromtransformersimportAutoTokenizer,AutoModelForCausalLMimporttorch# 1. 指定模型名称model_nameQwen/Qwen2.5-1.5B-Instructprint(正在下载并加载模型首次运行需要下载约3GB文件...)# 2. 加载分词器tokenizerAutoTokenizer.from_pretrained(model_name,trust_remote_codeTrue)# 3. 加载模型不量化FP16精度显存占用约2.5GBmodelAutoModelForCausalLM.from_pretrained(model_name,torch_dtypetorch.float16,device_mapauto,trust_remote_codeTrue)print(模型加载完成开始对话...\n)# 4. 对话循环messages[]whileTrue:user_inputinput(你: )ifuser_input.lower()in[exit,quit,退出]:breakmessages.append({role:user,content:user_input})texttokenizer.apply_chat_template(messages,tokenizeFalse,add_generation_promptTrue)inputstokenizer(text,return_tensorspt).to(model.device)outputsmodel.generate(**inputs,max_new_tokens512,temperature0.7,do_sampleTrue)responsetokenizer.decode(outputs[0][inputs.input_ids.shape[1]:],skip_special_tokensTrue)print(f助手:{response}\n)messages.append({role:assistant,content:response})在命令行确保 (llm_env) 环境是激活的中cd 到脚本所在目录然后在命令行中设置环境变量让下载走国内镜像set HF_ENDPOINThttps://hf-mirror.com接着运行文件python test_qwen.py会输出正在下载并加载模型首次运行需要下载约3GB文件... ... 模型加载完成开始对话...现就就可以对话了你: 你好你是谁 助手: 我是Qwen由阿里云开发的大规模语言模型。我是一个人工智能助手可以帮助回答问题、提供信息和进行对话。有什么我可以帮助你的吗2.ChatGLMfromtransformersimportAutoTokenizer,AutoModelimporttorch# ChatGLM3-6B 模型名称model_nameTHUDM/chatglm3-6bprint(正在下载并加载 ChatGLM3-6B (4-bit 量化)...)# 加载分词器tokenizerAutoTokenizer.from_pretrained(model_name,trust_remote_codeTrue)# 4-bit 量化加载模型modelAutoModel.from_pretrained(model_name,load_in_4bitTrue,# 启用 4-bit 量化torch_dtypetorch.float16,device_mapauto,trust_remote_codeTrue)print(模型加载完成开始对话...\n)# ChatGLM 的对话方式与 Qwen 不同使用 model.chat()whileTrue:user_inputinput(你: )ifuser_input.lower()in[exit,quit,退出]:break# ChatGLM 内置了对话历史管理response,historymodel.chat(tokenizer,user_input,history[])print(f助手:{response}\n)三、部署API在虚拟环境llm_env中安装FastAPI和UvicornFastAPI和 Uvicorn这两个库# 临时使用清华镜像源安装 fastapi 和 uvicornpipinstallfastapi uvicorn-ihttps://pypi.tuna.tsinghua.edu.cn/simple/然后新建文件qwen_API.pyfrom fastapi import FastAPI, HTTPException from pydantic import BaseModel from transformers import AutoTokenizer, AutoModelForCausalLM import torch app FastAPI() # 加载模型全局加载一次 model_name Qwen/Qwen2.5-1.5B-Instruct tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.float16, device_mapauto, trust_remote_codeTrue ) class ChatRequest(BaseModel): prompt: str max_new_tokens: int 512 app.post(/generate) def generate(request: ChatRequest): inputs tokenizer(request.prompt, return_tensorspt).to(model.device) outputs model.generate(**inputs, max_new_tokensrequest.max_new_tokens) response tokenizer.decode(outputs[0], skip_special_tokensTrue) return {response: response} if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)如果你的网络无法稳定访问 Hugging Face需要先设置镜像setHF_ENDPOINThttps://hf-mirror.com现在就可以启动 API 服务了python qwen_API.py看见以下信息就表示成功了INFO: Started server process[8476]INFO: Waitingforapplication startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000(Press CTRLC to quit)接下来就可以访问http://localhost:8000/docs查看 Swagger 文档。