type
status
date
slug
summary
tags
category
icon
password
构建一个2B的千问大模型
硬件与底层环境要求
在开始之前,请确保您的 Ubuntu 环境满足以下条件:
- GPU: NVIDIA GPU(建议 8GB 显存以上,2B 模型 FP16 占用约 4.5GB,但运行推理和 Gazebo 仿真建议预留空间)。
- CUDA: 12.1 或更高版本。
- Python: 3.9 或 3.10。
为了不污染系统环境,建议使用miniconda创建虚拟环境。环境路径通常为/home/你的用户名/miniconda3/envs/qwen_vlm
1.底层驱动与硬件激活
这一阶段确保了显卡能被系统识别,并能够被 AI 框架调用。
- 驱动安装:使用
ubuntu-drivers devices寻扎末尾带有recommended字样的版本。 - 安装指令:
sudo apt install nvidia-driver-XXX(XXX 替换为数字版本)。
- 安全启动(MOK)处理:
- 现象:
nvidia-smi报错,提示驱动未加载。 - 解决:重启进入 BIOS,禁用 Secure Boot (安全启动),彻底解决内核拒绝加载驱动的问题。
- 状态验证:终端输入
nvidia-smi看到 4060 显卡信息表格,标志着底层打通。
2.Python 虚拟环境构建
这一阶段确保了 AI 环境与 ROS2 系统环境互不干扰。
- 管理工具:安装 Miniconda,利用其轻量化的特性管理 Python 环境。
- 环境创建:运行
conda create -n qwen_2b python=3.10。
- 激活环境:
conda activate qwen_2b。
3.核心 AI 框架安装
这一阶段安装了连接硬件与算法模型的“桥梁”。
- PyTorch 安装:
- 指令:执行支持 CUDA 12.1 的安装命令。
- 避坑:忽略 ROS2 引起的
generate-parameter-library-py依赖冲突报错。
- 验证 GPU 连通性:
- 验证指令
torch.cuda.is_available()返回 True。
4.Qwen2-VL 专属库部署
这一阶段安装了处理视觉和语言融合任务的特定组件。
- Transformers:通过 Git 或国内镜像安装最新版
transformers(确保版本支持 Qwen2-VL)。
- 多模态工具:安装
accelerate(显存优化)、qwen-vl-utils(视频/图片预处理)。
- 下载器:安装
modelscope,用于避开海外网络限制。
5.模型权重获取与验证
这一阶段完成了大脑“记忆”的装载。
- 权重下载:使用
snapshot_download脚本从 ModelScope 拉取约 4.5GB 的 Qwen2-VL-2B-Instruct 权重。
- 推理验证:编写
brain_test.py。 - 关键设置:
device_map="auto"将模型自动加载到 4060 上。 - 测试结果:模型成功识别出“卧室”及家具细节,证明全链路运行正常。
- 测试代码示例
模型的使用
1. 本地集成调用 (Local Native API)
通过
transformers 库直接将模型权重加载到本地显存(RTX 4060)中。- 实现方式:使用
from_pretrained加载模型,直接在 Python 进程中调用model.generate()。
- 优点:
- 低延迟:数据在显存内传递,没有网络开销。
- 高隐私:数据不离开本地机器。
- 深度集成:可以直接访问模型的中间层(Hidden States),适合做科研和底层优化。
- 缺点:
- 资源占用高:模型运行会持续占用大量显存,可能与 Gazebo 争抢资源。
- 环境复杂:Python 依赖多,容易产生版本冲突。
2. 本地推理服务器 (Local Inference Server)
将大模型包装成一个独立的服务(通过端口通信),其他程序通过 API 请求它。
- 常用工具:vLLM(目前最快)、Ollama、LM Studio。
- 实现方式:
- 服务端:启动一个 API 服务(如占领
8000端口)。 - 客户端:ROS2 节点使用 HTTP 或 OpenAI SDK 发送图片请求。
- 优点:
- 解耦:AI 环境和 ROS2 环境完全隔离。
- 并发处理:适合多个节点同时调用同一个大脑。
- 缺点:
- 序列化开销:图像数据需要转成 Base64 字符串,在大流量下会增加 CPU 负担和延迟。
3. 云端 API 调用 (Cloud API)
直接通过网络调用互联网大厂提供的接口(如 OpenAI, DashScope, Claude)。
- 实现方式:使用 API Key,通过 HTTP 请求发送数据到云端服务器。
- 优点:
- 零算力要求:本地甚至不需要显卡,哪怕是树莓派也能跑。
- 模型最强:可以调用目前人类最强的模型(如 GPT-4o)。
- 缺点:
- 网络依赖:断网或延迟高(Lag)时,机器人会变成“植物人”。
- 成本:按 Token 计费,频繁的视觉导航开销巨大。
4. 边缘计算模块调用 (Edge Hardware)
将模型量化后运行在专门的 AI 加速硬件上(如 Jetson Orin, TPU)。
- 实现方式:将模型转为 TensorRT 或 ONNX 格式。
- 优点:功耗极低,适合移动机器人长期运行。
- 缺点:模型精度会有所损失(量化导致),且部署难度最高。
📊 方法对比总结表
方法 | 响应速度 | 部署难度 | 硬件要求 | 适合场景 |
本地集成 | 极快 | 中等 | 高 (4060+) | 你的科研/实验项目 |
本地服务 | 快 | 简单 | 高 | 复杂多机器人系统 |
云端 API | 慢 (受限于网速) | 极简 | 极低 | 算法原型验证 |
边缘硬件 | 极快 | 极难 | 专用硬件 | 产品量产/野外作业 |
FsatAPI封装模型
这里我们默认是在虚拟环境中构建了一个2b的千问大模型。
构建一个简单的AI服务端
1.安装 FastAPI 相关库:
2.创建
qwen_server.py:将以下逻辑整合到你的推理脚本中:3.调用API
验证AI服务端是否正常工作
在尝试运行机器人之前,先确保 Qwen 模型能正确解析指令。
- 启动服务端:在
qwen_2b的 Conda 环境下运行qwen_server.py。
- 手动测试接口:打开一个新的终端,使用
curl命令发送一个模拟请求,看它是否返回正确的房间名: - 预期结果:返回
{"target": "kitchen"}。如果这一步失败,请检查模型路径和 FastAPI 的启动日志。
问题总结
阶段 | 遇到的问题/挑战 | 最终对策与解决方法 |
环境管理 | 担心 Anaconda 太臃肿,影响系统。 | 安装了 Miniconda,创建了独立的 qwen_2b 虚拟环境。 |
底层驱动 | nvidia-smi 报错,找不到显卡驱动。 | 通过 ubuntu-drivers 安装 nvidia-driver-580 专有驱动。 |
安全启动 | 驱动被拒绝(Key rejected by service)。 | 进入 BIOS 禁用了 Secure Boot,彻底打通内核与驱动的连接。 |
深度学习库 | PyTorch 安装时出现 ROS2 依赖冲突。 | 忽略冲突提示,确保 torch-cu121 在 Conda 环境内成功安装。 |
源码安装 | pip install git+... 下载缓慢或卡死。 | 切换至国内镜像源或手动安装,成功部署最新版 transformers。 |
模型获取 | 官方 Hub 下载太慢。 | 使用 ModelScope (魔搭) 镜像,5分钟内完成 4.5GB 权重下载。 |
通用方法归纳
🛠️ 大模型部署的“四层架构”流程
第一层:底层环境 (Hardware & Driver)
目标: 让操作系统能“使唤”动你的显卡。
- 安装驱动:没有驱动,显卡只是一块板砖。你今天通过
ubuntu-drivers和nvidia-smi解决的就是这个问题。
- CUDA Toolkit:这是 NVIDIA 专门为计算准备的工具箱。虽然现在很多库(如 PyTorch)自带了精简版 CUDA,但系统底层的稳定支持是基础。
第二层:运行容器 (Python Environment)
目标: 给模型一个干净、独立的房间,防止版本冲突。
- 虚拟环境 (Conda):为了防止 A 模型的库把 B 模型的库弄乱。
- 核心引擎 (PyTorch):这是目前最主流的深度学习框架。它负责把复杂的数学公式转化成显卡能算的矩阵运算。
第三层:算法框架 (Transformers & Toolkits)
目标: 安装能够“阅读”模型权重的软件。
- Transformers 库:这是 Hugging Face 出品的行业标准。它定义了模型该如何加载、如何分词(Tokenize)。
- 多模态插件 (Accelerate/VL-Utils):对于视觉模型(VL),还需要额外的插件来处理图片和视频,并优化显存占用。
第四层:模型权重 (Model Weights)
目标: 下载大脑的“记忆体”。
- 权重文件 (.safetensors):这是大模型经过数月训练后的结果,通常有好几个 GB。
- 配置文件 (.json):告诉程序这个模型有多少层、用了什么算力。
💡 一句话总结
“环境装好(驱动/Conda),框架搭好(PyTorch/Transformers),记忆下好(Weights),代码接好(Processor/Model)。”
有关问题,欢迎您在底部评论区留言,一起交流~
- Author:Koreyoshi
- URL:https://tangly1024.com/article/2d5c7b13-c6a7-80e2-adfb-fe8bd41cd051
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts








