
一、本周学习内容本周的主题从是生成式 AI 应用开发主要学习了以下内容LLM 基础知识理解大语言模型、Token、推理过程以及模型训练的主要阶段。Transformer 架构理解注意力机制、上下文窗口和自回归文本生成。模型选型根据 Jetson 的统一内存、模型参数量和量化精度选择合适的模型。本地大模型部署使用 Ollama 在 Jetson 上运行本地 LLM。Web 交互通过 Open WebUI 访问本地推理服务。API 与 Python 调用通过 HTTP API 和 Python 程序调用本地模型。VLM 多模态应用让模型接收图片并进行内容理解。离线语音助手理解并搭建 ASR → LLM → TTS 的本地语音交互链路。本周深刻理解模型服务、Web 界面、多模态输入和语音外设如何组合成一个完整的边缘 AI 应用。二、LLM 基础知识整理2.1 什么是 LLMLLMLarge Language Model大语言模型是一类以大量文本数据训练的神经网络模型。它的基本工作方式不是从数据库中查找一段固定答案而是根据已有上下文预测下一个 Token并不断重复这个过程最终生成完整回答。一个简化的推理流程可以表示为用户输入↓Tokenizer 将文本转换为 Token↓Transformer 根据上下文计算概率分布↓选择或采样下一个 Token↓不断重复直到生成结束标记2.2 TokenToken 是模型处理文本的基本单位。一个 Token 可能是一个汉字、一个词的一部分、英文单词或标点符号。Token 会影响以下内容输入内容占用的上下文长度模型推理所需的计算量API 服务的输入、输出统计长文本任务的处理能力。因此“上下文窗口为 8K、32K 或 128K”表示模型一次能够处理的 Token 数量上限而不是简单的汉字数量。2.3 模型训练的三个主要阶段预训练Pre-training模型从大量文本中学习语言规律、知识和基本推理能力。指令微调Supervised Fine-Tuning使用问答或指令数据让模型学会按照人类要求完成任务。对齐阶段Alignment通过人类反馈或偏好数据让回答更加安全、自然并符合预期。在 Jetson 上通常不会从零训练大模型而是下载已经训练好的模型通过量化和推理框架在本地运行。2.4 Transformer 与自回归生成Transformer 的核心是注意力机制。模型可以根据上下文判断哪些 Token 对当前生成最重要。自回归生成表示模型每次生成一个新的 Token再把它加入上下文继续预测。这样能够形成连贯文本但回答越长推理时间和内存访问量也会增加。三、Jetson 上的大模型选型3.1 选型时需要考虑的因素Jetson Orin NX 16GB 使用 CPU 与 GPU 共享的统一内存因此不能只看模型文件能否下载还要为 CUDA、KV Cache、推理框架、系统进程和 Web 服务预留内存。选型因素主要影响参数量参数越多模型能力通常越强但内存和计算需求越高量化精度4-bit 模型更节省内存适合 16GB Jetson上下文窗口上下文越长KV Cache 占用越大语言能力中文场景需要优先选择中文效果较好的模型模态文本 LLM 与带视觉编码器的 VLM 内存需求不同推理框架Ollama、llama.cpp、TensorRT-LLM 的部署复杂度和性能不同3.2 本机推荐路线本次课程优先选择Qwen2.5 7B 量化模型 Ollama选择原因7B 规模适合 Orin NX 16GB 进行单模型推理中文问答能力较好Ollama 模型管理和 API 调用方式简单可以与 Open WebUI、Python 和语音助手组合。如果运行 7B 模型时内存压力较大可以先使用 3B 模型完成服务链路验证再切换到 7B。运行 LLM/VLM 时不建议同时保留 YOLO、多个 WebUI 和多个大模型实例。下载好了qwen2.5:3b的模型四、设备与环境检查4.1 设备信息已经确认当前设备信息如下项目当前环境设备型号NVIDIA Jetson Orin NX Engineering Reference Developer Kit核心模块NVIDIA Jetson Orin NX 16GBP-Number p3767-0000SoCTegra234架构aarch64系统Ubuntu 22.04 Jammy JellyfishL4TR36.4.4内核5.15.148-tegraCUDA12.6.68cuDNN9.3.0TensorRT10.3.0.30Docker28.2.24.2 动态库验证结果此前通过 Pythonctypes完成动态库加载测试结果如下[PASS] libcudart.so.12[PASS] libcudnn_ops.so.9[PASS] libnvinfer.so.10[PASS] TensorRT Python: 10.3.0这些结果表明 CUDA Runtime、cuDNN 和 TensorRT 已经具备不需要为了本周任务重新刷机。4.3 Docker GPU 环境已经验证Docker service: activeDefault Runtime: nvidia该环境已经成功运行过 Ultralytics YOLO 容器说明 Docker、NVIDIA Runtime 和 Jetson GPU 容器链路具备运行 AI 应用的基础。五、本地 LLM 部署思路Ollama Qwen2.5本节执行的详细步骤如下5.1 释放统一内存运行本地大模型前建议先停止 YOLO 和其他非必要推理容器docker stop ultralytics-yolo open-webui 2/dev/null || truefree -hdf -h /docker ps -adocker stop只停止容器不会删除镜像、模型和配置。5.2 启动 Ollama本机已经使用 jetson-examples 和 Docker因此优先沿用容器化 Ollama不再另外安装一套宿主机 Ollama避免两套服务争用11434端口。docker ps -a --filter nameollama如果 Ollama 容器存在但已停止docker start ollama如果容器尚不存在可以通过 jetson-examples 启动export PATH$HOME/.local/bin:$PATHreComputer run ollama5.3 拉取并运行模型docker exec -it ollama ollama pull qwen2.5:7bdocker exec -it ollama ollama listdocker exec -it ollama ollama run qwen2.5:7b5.4 模型能力验证测试能力可以从中文表达、逻辑推理、代码、Jetson 专业知识和格式遵循几个方面测试。先在 Ollama 对话中输入1.中文解释能力请用初学者能理解的语言在150字以内解释什么是大语言模型并举一个生活中的例子。2.Jetson 与边缘 AI比较云端AI和Jetson本地AI在延迟、隐私、成本、功耗和网络依赖方面的区别用表格输出。3.编程能力写一个Python函数输入一张图片依次完成灰度化、高斯模糊和Canny边缘检测并把三个结果保存到指定目录。4.逻辑推理一个程序处理100张图片需要20秒。如果优化后单张处理时间降低30%但初始化额外需要2秒总耗时是多少写出计算过程。预期效果终端能够显示模型生成的中文回答并且回答过程完全由 Jetson 上的本地模型完成。六、通过 Open WebUI 访问本地模型Ollama 提供模型服务Open WebUI 提供类似在线聊天工具的浏览器界面。两者的关系如下Windows 浏览器↓Open WebUI↓Ollama API11434↓Qwen2.5 7B完成部署后需要验证Windows 浏览器能够打开 Open WebUI页面能够看到qwen2.5:7b能够进行一轮完整中文对话关闭互联网后已经下载的模型仍能在局域网内完成推理。可以选择语言模型qwen2.53b和多模态模型lllava:7bqwen2.53b模型验证lllava:7b模型验证首次下载模型和容器仍然需要网络“离线运行”指模型与依赖已经准备完成后核心推理不再依赖云端 API。七、通过 API 和 Python 调用 Ollama7.1 curl 调用Ollama API 默认端口为11434。可以在 Jetson 上测试curl http://127.0.0.1:11434/api/chat \-d {model: qwen2.5:7b,messages: [{role: user, content: 请介绍一下边缘生成式 AI。}],stream: false}预期结果终端返回 JSON其中包含模型生成的回答。7.2 Python 调用import requestsurl http://127.0.0.1:11434/api/chatpayload {model: qwen2.5:7b,messages: [{role: user,content: 请用中文解释什么是 VLM。,}],stream: False,}response requests.post(url, jsonpayload, timeout300)response.raise_for_status()print(response.json()[message][content])这一部分说明本地大模型不仅可以通过网页聊天还可以作为服务被其他 Python 应用调用。八、VLM 多模态应用8.1 多模态概念VLMVision Language Model能够同时处理图片和文本。与第二周的 YOLO 目标检测不同VLM 不只是输出类别和检测框还可以理解图像内容并使用自然语言回答问题。两种视觉任务的区别对比项YOLOVLM主要任务目标检测、定位图像理解、描述和问答输出类别、置信度、检测框自然语言回答优点速度快、结果结构化语义理解能力更强典型应用实时检测、安防、质检图片问答、内容分析、场景理解8.2 多模态能力验证VLM Demo 的验收方式选择一张包含多个物体的实际图片上传到 VLM 应用提问“图片中有哪些物体它们之间是什么关系”保存输入图片、问题和模型回答的同屏截图成功拉取多模态模型lllava:7b模型理解图片并用中文描述图片里面的内容也可以让模型直接读取文件夹里面的图片一次性给出所有的结果这一部分说明本地大模型有识别图片的能力即具有多模态能力。九、ASR → LLM → TTS 离线语音助手9.1 完整处理链路USB 麦克风 / reSpeaker Flex↓FunASR语音转文字↓Ollama Qwen2.5 7B生成回答↓Coqui TTS文字转语音↓扬声器播放该方案把三种能力组合在一起ASR 负责“听懂”LLM 负责“理解和回答”TTS 负责“说出来”。9.2 为什么选择课程项目一课程提供了 FunASR Qwen2.5 7B Coqui TTS 路线以及更复杂的 NVIDIA Riva 路线。Orin NX 16GB 优先选择项目一因为它的硬件要求和部署复杂度更适合当前设备。Riva 路线更适合内存更大的 AGX Orin。9.3 运行前检查lsusbarecord -laplay -l先录制并回放 5 秒音频mkdir -p ~/project/seeedstudio/week3/audioarecord -f S16_LE -r 16000 -c 1 -d 5 \~/project/seeedstudio/week3/audio/mic_test.wavaplay ~/project/seeedstudio/week3/audio/mic_test.wav只有先确认麦克风和扬声器正常才能继续排查模型链路。9.4 预期运行效果按R开始录音对着麦克风说一句中文按S停止录音FunASR 输出识别文本Qwen2.5 输出中文回答Coqui TTS 合成并播放语音。以下是在Jetson上面实现 ASR LLM TTS 流水线的完整测试项目最终演示如下所示reComputer Reachy Mini 语音 LLM程序正常启动后我们可以用键盘上的按键控制录制的R开始和S停止。录制停止后程序会调用本地大型语言模型以生成响应。十、本周实践完成情况实践任务当前状态说明Jetson 基础环境复核✅ 已完成设备、L4T、CUDA、cuDNN、TensorRT 已确认Docker NVIDIA Runtime✅ 已完成Docker active默认 Runtime 为 nvidia模型选型✅ 已完成优先采用 Qwen2.5 7B 量化模型SSH 连接✅ 已完成Windows PowerShell 可正常 SSH 登录Ollama Qwen2.5 7B✅ 已完成保存了模型列表和中文问答输出Open WebUI✅ 已完成保存了页面和对话截图API / Python 调用✅ 已完成保存了 JSON 与 Python 输出VLM Demo✅ 已完成采用lllava:7b模型展示了多模态模型的能力ASR → LLM → TTS✅ 已完成在Jetson上面实现了在reComputer Jetson 上部署本地语音 LLM十一、本周学习总结通过本周学习我认识到在 Jetson 上部署生成式 AI 是一个完整的系统工程而不仅是安装模型文件。模型能否稳定运行取决于模型参数量、量化方式、统一内存、Docker Runtime、网络代理、端口映射和外设状态。对于 Jetson Orin NX 16GB比较合理的实践路线是先验证基础环境→ 再运行 Ollama 单模型→ 接入 Open WebUI→ 完成 API / Python 调用→ 体验 VLM→ 最后组合 ASR、LLM 和 TTS与第二周 YOLO 实践相比YOLO 更强调实时检测和结构化输出而本周 LLM/VLM 更强调自然语言生成、多模态理解和应用组合。感谢seeedstudio提供的硬件支持