![]()
2025年11月2日,ollama 发布了v0.12.9最新版本,本次更新主要针对 CPU-only 系统的性能回退问题进行了修复,同时在 GPU 设备检测、ROCm 错误处理以及 CUDA 内存分配优化方面进行了多项改进。以下是版本的详细变化说明。
一、主要更新内容 1. 修复 CPU-only 系统性能回退问题
本次版本重点修复了在仅使用 CPU 的环境下出现的性能回退(regression)问题,确保在缺乏 GPU 的系统上依旧能够高效运行模型。
2. GPU 设备检测路径优化
在 GPU 设备枚举的过程中,旧版本使用LibOllamaPath作为库路径,本次更新统一改为ml.LibOllamaPath,保证路径引用一致性,提升跨平台与多设备环境下的稳定性。
改动包括:
•
discover/runner.go中多处将LibOllamaPath替换为ml.LibOllamaPath• 在 ROCm 目录查找、设备列表更新等逻辑中进行相同修改
•
ml/device.go中LibraryPaths函数初始化时确保LibOllamaPath包含于 GPU 库路径列表中
这些改动有助于在 GPU 初始化阶段正确加载相关库文件,尤其是在混合 GPU 环境中(CUDA 与 ROCm 并存)。
3. ROCm 错误捕获与日志改进
新增对ROCm error的日志监控,llm/status.go的errorPrefixes列表中增加了"ROCm error"条目,使错误信息能够被及时捕获与输出,便于定位问题。
4. CUDA 内存操作优化
在 CUDA 后端实现中增加了对内存设置与拷贝操作的优化逻辑:
• 新增cudaMemsetAsyncReserve方法:在图预留(reserving_graph)阶段,避免执行不必要的
cudaMemsetAsync操作,从而减少 GPU 内存分配压力• 对
cudaMemcpyAsync、cudaMemcpy2DAsync、cudaMemsetAsync进行了宏替换,使其在预留阶段直接返回成功,而不执行实际操作• 这一改动在
ggml/src/ggml-cuda/common.cuh和ml/backend/ggml/ggml/src/ggml-cuda/common.cuh中均有实现,使 CUDA 后端在图优化阶段更高效
效果:
• 避免无意义的 GPU 内存清零操作
• 在模型装载与推理时减少延迟
integration/api_test.go中移除了冗余的TestAPIEmbeddings测试方法,此前该测试会调用嵌入 API(Embeddings),包括模型拉取与输出验证,此处删除主要是简化测试集,避免重复测试相同功能。
6. 文件结构调整与命名空间修改
discover/path.go文件更名为ml/path.go,并将包名从discover改为ml,归类到机器学习核心逻辑下,使模块结构更加清晰。
二、总结
ollama v0.12.9 在保持功能稳定的同时,解决了 CPU-only 系统的性能问题,并且显著优化了 GPU 设备检测、ROCm 错误日志及 CUDA 内存分配机制。这些改进对在多种硬件环境中部署 Ollama 的用户尤为重要:
•CPU-only 用户可获得更好的推理性能
•GPU 用户能够享受更稳定的设备检测与库加载机制
•CUDA/ROCm 用户可减少初始化延迟、提升整体运行效率
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.