恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
大模型本地部署实战:从零搭建环境到跑通第一次推理
首页
资讯中心
/
大模型本地部署实战:从零搭建环境到跑通第一次推理
大模型本地部署实战:从零搭建环境到跑通第一次推理
发布时间:2026/9/10 5:45:19
每年 Datawhale 发起大模型学习营的时候Task1 都是劝退率最高的一个节点。我见过太多人倒在这一步教程翻了一大堆代码复制粘贴就是报错模型下载到一半断了显存不够直接崩溃最后默默关掉 IDE 再也没有打开过。其实 Task1 要解决的事情非常单纯——把大模型算法全栈这条路的第一步走通也就是在你自己的电脑上把环境搭好、让一个真实的大模型跑起来亲眼看到它生成一段文字。仅此而已。这篇内容就围绕 Datawhale 大模型算法全栈基础篇的 Task1 展开把从零到第一次推理的完整过程拆开揉碎讲清楚每一步为什么这么做、遇到问题怎么排查。不管你是刚接触大模型 LLM 的算法新手还是想往 AI 全栈方向转的开发只要跟着把这一篇走完你就迈过了大模型学习路线上最容易被卡住的那道坎。1. Task1 到底在做什么先跑通再理解1.1 为什么全栈基础篇从“跑通推理”开始很多人接触大模型的第一反应是去啃 Transformer 论文、理解注意力机制或者直接上手微调。这个思路没有错但顺序反了。你想象一下学开车教练一定先让你点火、挂挡、把车开出去绕一圈而不是先讲内燃机原理和变速箱结构。等你真正开过一段路再回头理解那些机械原理感受完全不同。大模型学习也是一样。Task1 的设计逻辑就是“先让模型跑起来再理解模型为什么能跑”。当你亲眼看到 Qwen 这样的模型基于你的输入生成出完整回答时你对 token、上下文窗口、温度参数、采样策略这些概念才会有真实的体感。否则你学到的全是漂浮在空中的抽象名词过两天就忘。这个思路在 Datawhale 全栈基础篇里贯穿始终。所谓全栈不只是会写 Python 调用模型接口而是从数据、模型、训练、部署、评估这条链路都有基本认知。Task1 就是这条链路的第一个锚点它在告诉你大模型并不神秘它就是一个可以从命令行里跑起来的程序你可以控制它、观察它、调试它。1.2 Task1 的交付目标与验收标准我参加过的学习营里Task1 的作业要求通常非常具体一般包含四个层面本地环境准备完成Python、PyTorch、Transformers 等依赖安装成功成功下载一个开源大模型权重到本地通过代码加载模型并完成至少一次文本生成推理记录过程输出一份环境信息和推理结果的截图或日志有些版本还会要求完成一个更小的“自测”比如让模型写一段自我介绍、总结一段文字或者回答一个数学题。别小看这几个交付物它能一次性验证你的环境、网络、模型完整性、显存分配、编码格式这些最容易出问题的环节。我个人的建议是Task1 不要追求用到多先进的技巧更不要一上来就搞量化、分布式、流式输出这些花活。目标只有一个用最简单的方式让模型输出一段话。等这条链路稳定了你再慢慢做加法。1.3 环境选型本地还是云 GPU先想清楚再动手Task1 最常见的翻车点不是代码而是环境选型没有提前思考。我见过有人在只有 8GB 内存的笔记本上硬跑 7B 模型结果 Python 进程直接被系统杀掉也见过有人花半天时间在云服务器上配环境最后发现租来的显卡驱动和 PyTorch 版本对不上。先算一笔账大模型显存占用有个粗略公式——模型参数量乘以每个参数的字节数。以 fp16 精度为例1B 参数模型大约需要 2GB 显存7B 模型就需要 14GB。这还只是加载权重的开销推理时 KV Cache 和中间激活还会额外吃掉一部分显存。所以如果你只有消费级显卡比如 8GB 显存的 RTX 4060最适合的选择是 1.5B 或 3B 规模的中小型模型体验流畅且效果足够说明问题。如果电脑配置确实很低也没有独立显卡我有两个推荐方案。一是使用云 GPU 平台按小时租一块卡整个 Task1 跑完成本通常不超过十块钱性价比很高。二是用 CPU 硬扛小模型比如 Qwen2.5-0.5B 这种 5 亿参数的模型纯 CPU 推理虽然慢一点但跑通流程完全没问题一段话几十秒内也能生成出来。Task1 的重点是流程通畅不是追求速度。2. 环境搭建实操从零到能跑模型2.1 创建 Python 环境Miniconda 安装与配置环境隔离是第一步也是最容易被忽略的一步。我强烈建议你使用 Miniconda 而不是直接往系统 Python 里装包因为大模型项目依赖非常容易冲突——你今天装的 Transformers 版本可能和下周某个教程要求的版本不兼容到时候在系统环境里折腾会让人崩溃。安装 Miniconda 之后打开终端或 Anaconda Prompt创建一个专门的大模型学习环境conda create -n llm python3.10 conda activate llm选择 Python 3.10 是有讲究的。目前 PyTorch 和 Transformers 生态对 3.10 的兼容性最好3.12 虽然也能跑但有些老一点的项目依赖还没完全跟上容易出现莫名奇妙的编译错误。如果你用的是苹果 M 系列芯片创建一个osx-arm64平台的环境更稳妥。2.2 安装 PyTorch 与验证 GPUPyTorch 是整个大模型推理链路的底层引擎虚拟环境激活后第一件事就是装它。安装方式取决于你有没有 NVIDIA 显卡以及 CUDA 版本最简单的做法是直接去 PyTorch 官网选择对应的安装命令。有 NVIDIA 显卡的情况下我推荐安装带 CUDA 支持的版本。这里有个经验不需要提前装好本机 CUDA。PyTorch 的 pip 包已经内置了运行所需的 CUDA 库你只需要显卡驱动足够新就行。安装完成后在 Python 里执行这段代码验证import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else CPU only)如果torch.cuda.is_available()输出True说明 GPU 链路没有问题。如果输出False大概率是 PyTorch 版本和你显卡驱动不匹配这时可以去 NVIDIA 官网查一下驱动支持的 CUDA 版本区间再重新安装对应版本的 PyTorch。2.3 安装 Transformers 与镜像源配置Hugging Face 的 Transformers 库是大模型算法学习中绕不开的工具它把加载模型、预处理文本、执行推理封装成了非常简洁的接口。Task1 阶段你需要安装这几个库pip install transformers pip install accelerate pip install sentencepiece pip install protobuf这里accelerate是 Hugging Face 的并行加速库加载大模型时用device_mapauto来自动分配设备就可以自动把部分层放到 CPU 或 GPU 上显存吃紧的时候非常管用。sentencepiece和protobuf是很多 Tokenizer 的底层依赖某些模型分支在读取分词模型时会用到提前装上能省掉不少报错。在国内网络环境下直接用 pip 从官方源下载会比较慢甚至超时。我习惯在安装时加一个国内镜像源参数pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple装好后可以用pip show transformers查看版本号确保安装成功。2.4 模型下载路径与缓存管理模型权重文件通常以 GB 为单位下载速度直接决定了你 Task1 的进度。Hugging Face 官方的模型下载接口默认从海外服务器拉取在国内很容易卡住。我的做法是给huggingface_hub指定一个国内镜像地址通过环境变量设置export HF_ENDPOINThttps://hf-mirror.comWindows 用户可以在命令行执行set HF_ENDPOINThttps://hf-mirror.com或者在 Python 代码开头通过os.environ[HF_ENDPOINT] https://hf-mirror.com来设置。设置之后所有通过 Transformers 或 huggingface_hub 触发的下载都会自动走镜像速度和稳定性提升非常明显。模型文件默认缓存在~/.cache/huggingface/hub目录下如果 C 盘空间吃紧可以通过设置HF_HOME环境变量把缓存目录改到其他磁盘。这一步看起来无关紧要但等你在 Task1 之后开始尝试多个模型每个模型动辄几个 GB缓存目录管理得好能省下大量磁盘空间。3. 第一次推理让大模型开口说话3.1 用 pipeline 三行代码完成文本生成环境准备好之后最激动人心的时刻来了。Transformers 提供的pipeline接口是最快体验大模型的方式三行代码就能完成一次推理from transformers import pipeline generator pipeline(text-generation, modelQwen/Qwen2.5-1.5B-Instruct) result generator(用一句话介绍大模型, max_new_tokens100) print(result[0][generated_text])第一次运行这端代码时Transformers 会自动下载模型权重到本地缓存下载完成后自动加载。这里要注意几个点max_new_tokens控制生成的 token 数量上限Task1 阶段不用设太大100 左右足够观察效果模型名称要用 Hugging Face 或者镜像上真实存在的仓库名Qwen/Qwen2.5-1.5B-Instruct是目前很稳定的选择如果你的网络环境访问 hf-mirror 也有问题可以到 ModelScope 魔搭社区下载对应模型然后再本地加载如果你加载的模型比较大比如 7B 参数建议在创建 pipeline 时加上device_mapauto把部分计算层自动分配到 CPU避免显存溢出。3.2 更精细的控制AutoModel 与 AutoTokenizerpipeline用起来很爽但如果你想真正理解大模型推理的过程就必须亲手拆一遍AutoModel和AutoTokenizer的组合。它们分别负责加载权重和加载分词器也是后面做微调、做部署时一定会用到的组件。下面是我在 Task1 阶段反复使用的一段代码模板from transformers import AutoModelForCausalLM, AutoTokenizer model_name Qwen/Qwen2.5-1.5B-Instruct tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( model_name, trust_remote_codeTrue, device_mapauto, torch_dtypeauto ) messages [{role: user, content: 请用一句话解释什么是大模型}] text tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) inputs tokenizer(text, return_tensorspt).to(model.device) outputs model.generate(**inputs, max_new_tokens200, do_sampleTrue, temperature0.7) response tokenizer.decode(outputs[0], skip_special_tokensTrue) print(response)这里值得解释的细节不少。trust_remote_codeTrue是因为 Qwen 等很多中文大模型的实现不仅仅是标准 Transformer 结构还需要执行模型仓库里附带的自定义 Python 代码不信任远程代码的话会直接报错。apply_chat_template是把对话消息转换成模型期望的模板格式这一步如果跳过模型输出质量会明显变差因为它不知道这是对话任务。temperature0.7控制随机性数值越高回答越多样越低越保守。3.3 对话模型与基座模型的区别下载模型的时候你可能会看到两种命名后缀一种带Instruct或Chat一种是纯基座模型例如Qwen/Qwen2.5-1.5B。这两种模型的使用方式完全不同Task1 阶段新手经常会搞混。基座模型只学会了“续写”文本你给它一段话它只会按照训练数据中学到的统计规律继续往下写。它不知道怎么和你对话也不会遵循指令。而 Instruct 版本经过了指令微调和人类反馈对齐它知道你是在提问知道要用回答的口吻输出也经过安全性训练。所以 Task1 阶段我强烈建议你选择带 Instruct 后缀的对话模型否则你会得到一堆意义不明的续写文本然后误以为模型坏了。3.4 显存不够怎么办量化与 Ollama 本地部署很多人的电脑显卡只有 6GB 或 8GB 显存加载 7B 模型时直接 OOM 崩溃。这时候有两个方向可以选择。第一个方向是把模型量化之后加载。量化的思路是把模型参数从 16 位浮点数压缩到 8 位甚至 4 位整数大幅减小显存占用。Transformers 配合 bitsandbytes 库4-bit 量化加载 7B 模型只需要不到 4GB 显存from transformers import BitsAndBytesConfig, AutoModelForCausalLM import torch quantization_config BitsAndBytesConfig( load_in_4bitTrue, bnb_4bit_compute_dtypetorch.float16 ) model AutoModelForCausalLM.from_pretrained( Qwen/Qwen2.5-7B-Instruct, quantization_configquantization_config, device_mapauto )第二个方向是用 Ollama 这类大模型部署工具。Ollama 把模型下载、量化、推理封装成了极简命令安装后只需要ollama pull qwen2.5:1.5b ollama run qwen2.5:1.5b它会把模型跑成一个本地服务也可以通过 HTTP API 调用。Ollama 的底层已经做了很好的显存管理和量化优化对新手非常友好你在命令行里和模型聊几句就能直观感受到大模型对话是什么体验。我自己的习惯是初学阶段用 Ollama 建立直觉深入研究时用 Transformers 自己写代码控制每一个细节。3.5 推理代码中的常见报错与解决把 Task1 阶段出镜率最高的几个报错整理成一个速查表建议直接保存。这些我都实际踩过每个背后都有对应的坑报错信息原因分析解决方案CUDA out of memory模型权重加推理缓存超出显存换更小的模型、启用量化、加device_mapauto或关闭其他占用显存的程序KeyError: qwen2Transformers 版本太旧不认识新模型结构升级 Transformerspip install -U transformershub returned an error模型下载失败或仓库路径不存在配置HF_ENDPOINT镜像检查模型名拼写或改用 ModelScope 预先下载UnicodeDecodeError模型文件下载不完整缓存损坏删除~/.cache/huggingface/hub中对应模型目录后重新下载tokenizer_config.json not found仓库中缺少配置文件或非标准模型确认模型是否支持 Transformers某些模型需要trust_remote_codeTrueGPU OOM 这类问题最常见但最容易修。建议通过nvidia-smi命令查看实际显存占用情况如果一个 1.5B 模型就 OOM大概率是 PyTorch 没有正确使用 GPU 而是把所有中间变量都留在显存里加一行model.eval()、使用with torch.no_grad():包裹推理过程能减少不少临时缓存。4. 从 Task1 到全栈后续该怎么学4.1 全栈大模型工程师的技能树Task1 跑通之后你已经具备了大模型算法全栈后续学习的地基。对照全栈技能树来看你目前处在什么位置以及接下来要补哪些东西提示词工程通过设计输入格式和指令来引导模型输出是成本最低、见效最快的技能检索增强生成 RAG把外部知识库和模型结合让模型回答“它没学过”的问题模型微调用 LoRA 等参数高效微调技术让模型适配特定领域全栈学习路线里最硬核的一环模型部署与推理优化用 vLLM 等工具提升吞吐量处理并发请求做显存管理模型评估建立评测集用指标衡量模型效果这是算法工程师和调包侠的分水岭Task1 对应的只是“模型加载与推理”这一小块。但正因为有了这块拼图后面的 RAG、微调、部署才有地方可以挂靠。你后面学的每一个新模块都要回到“加载模型→处理输入→得到输出”这个基本流程上来。4.2 我的学习路线建议与资源清单如果你跟着 Datawhale 的节奏走Task1 之后通常会进入 Prompt 工程、RAG、微调和部署的进阶任务。我根据踩坑经验给一条可以复制的学习路线按顺序来不要跳第一个阶段把 Ollama 和 Transformers 两条推理路径都玩熟尝试切换不同的模型规模观察回答质量和速度的变化。这个阶段不要急着写复杂代码目标是建立对模型能力的直觉。第二个阶段学习提示词工程用任务卡的方式规范化你的输入模板尝试 few-shot 让模型学会新的任务格式比如把一段口语转成结构化表格。第三个阶段接触 RAG用langchain或llama_index做一个本地文档问答机器人体验文本向量化、向量检索和生成融合的完整链路。第四个阶段啃 LLaMA-Factory 或 Hugging Face 的PEFT库用 LoRA 对一个小模型做领域微调理解训练流程和数据格式。到第四个阶段时你会发现自己已经可以独立完成一个 AI 全栈小项目了。这条学习路线我在多个学习群里验证过大部分同学走完前三个阶段就能在实习岗位上干初级的算法工程活了。4.3 大模型训练要用的数学Task1 需要掌握多少热搜里总有人问“大模型里面用到了数学哪些相关知识”我的回答可能让你意外Task1 阶段几乎不需要任何高等数学。你只需要理解几个基础概念概率模型预测下一个 token 的概率分布、对数Loss 计算的基础和信息熵理解困惑度 Perplexity。这些概念在高中和大学低年级数学里都有涉及。到了 RAG 阶段你需要了解向量和余弦相似度因为文本匹配本质上是在高维空间里计算距离。到了微调阶段你需要接触梯度下降和反向传播的直觉理解——你不需要会手推公式但你要知道学习率、batch size 这些超参数为什么会影响训练效果。真正需要扎实数学功底的是模型预训练和推理加速的底层研究那不是全栈工程师的重点。所以如果你数学基础一般完全不用被“大模型需要深厚数学功底”这种说法吓退。先动手跑模型遇到数学概念再回头补带着问题学效率远高于提前整个啃一遍数学书。4.4 Task1 阶段的重要提醒与实操心得最后写几条我在带新人时反复强调的经验都是真实踩坑换来的第一不要一开始就在本地同时装太多模型。每个模型权重大则十几 G小则几百 M装五六个就是几十 G 硬盘。Task1 阶段固定用一个 1.5B 的模型跑通全流程后面确认需要再扩展模型库。第二写代码时把模型下载和推理拆开。先用一个单独的脚本下载模型权重再在另一个脚本里做推理。这样下载出错时你只需要修下载脚本不用每次重复走完整条链路。第三重视中文文本编码问题。Windows 终端下 Python 读取中文可能出现编码错误在代码文件开头加# -*- coding: utf-8 -*-输出时用sys.stdout.reconfigure(encodingutf-8)可以避免很多乱码问题。第四养成监控资源习惯。运行推理时开一个终端窗口定期执行nvidia-smi看显存情况这能帮你快速判断 OOM 是模型太大还是代码写法有问题。很多显存问题重构代码后就能解决不一定要换更大的卡。我见过最快完成 Task1 的同学只花了一个晚上原因就是环境干净、网络配置好了、模型选得稳。也有同学折腾了整整三天大部分时间耗在换源、清缓存、修报错上。这篇内容把能提前避开的坑都列出来了按步骤走你完全可以做那个一晚上通关的人。等模型第一次在你电脑上生成完整回答的时候你会觉得前面所有折腾都值了。