【免费下载链接】hugotOnnx transformer pipelines in Golang项目地址https://gitcode.com/gh_mirrors/hu/hugot点击查看免费下载Hugot是一个用 Go 语言实现开源大语言模型本地推理的开源库基于 ONNX 格式与 ONNX Runtime GenAI 后端你可以在 Go 应用内直接加载并对话 Qwen、Phi、Gemma 等 LLM——无需 Python 服务、无需 REST API模型与数据全部留在自己的机器上。本文带你在 5 个步骤内从零搭出本地大模型对话并覆盖 GPU 加速、流式输出与工具调用等进阶玩法。 Hugot 是什么为什么需要它Hugot 把 Hugging Face 风格的 Transformer 流水线Pipelines搬到了 Go 生态中核心设计目标有四点特点说明Hugging Face 兼容Python 侧训练的模型导出 ONNX 后预测结果与 Python 版一致仅支持 ONNX统一模型格式PyTorch 模型可经 Optimum 一键导出进程内推理模型直接跑在你的 Go 进程里避免 RPC/HTTP 开销可插拔后端纯 Go、ONNX RuntimeORT、OpenXLA 三种后端按场景选择它的后端选择逻辑可以这样理解Go 后端纯 Go 实现、零 cgo 依赖适合小模型如 all-MiniLM-L6-v2和禁止 cgo 的环境但不支持生成式流水线ORT 后端通过构建标签-tags ORT编译启用是目前最快的推理后端唯一支持文本生成LLM 对话的方式底层使用 ONNX Runtime GenAIXLA 后端-tags XLA启用唯一支持 TPU 的后端暂不支持生成式流水线 所以本文主题本地跑 LLM走的就是ORT 后端 ONNX Runtime GenAI这条路线。第 1 步环境准备与依赖安装Hugot 当前在amd64 Linux上构建和测试需要 Go 1.27。1获取代码git clone https://gitcode.com/gh_mirrors/hu/hugot2下载 ONNX Runtime 动态库ORT 后端需要libonnxruntime.so。库默认从/usr/lib/libonnxruntime.so查找路径解析逻辑见 options/options.go你可以通过三种方式指定其他位置设置环境变量ONNXRUNTIME_DIR创建会话时传options.WithOnnxLibraryPath(/path/to/lib/dir)直接把库放进默认目录仓库中的 scripts/download-onnxruntime.sh 演示了如何从 ONNX Runtime 官方发布页拉取并安装到/usr/lib加--cuda参数则下载 GPU 版。参考 Dockerfile 可以看到完整的生产环境依赖组合。3在你的 Go 项目中引入go get github.com/knights-analytics/hugotORT 后端需要编译时打开构建标签go build -tags ORT第 2 步下载 ONNX 格式的大语言模型Hugot 内置了模型下载器可直接从 Hugging Face 拉取 ONNX 模型核心入口是DownloadModel实现位于 downloader.go。它会在下载前校验模型目录中包含.onnx与 tokenizer 文件保证只接受 ONNX 模型。以仓库测试用例中的Qwen3-4Bint4 量化为例模型清单见 testcases/downloadModels.gomodelPath, err : hugot.DownloadModel(ctx, KnightsAnalytics/qwen3-4B-int4, ./models/, hugot.NewDownloadOptions())DownloadOptions可以指定OnnxFilePath、ExternalDataPath大模型权重常拆成.onnx.data外部数据文件以及AdditionalFilePaths。生成式模型通常需要额外的genai_config.jsonONNX Runtime GenAI 的配置文件参考 testcases/downloadModels.go 中 Phi-3.5-vision 的完整示例。⚠️ 如果你只需要核心引擎、模型已自备可以用构建标签-tags NODOWNLOAD编译以排除下载器。第 3 步创建会话与文本生成流水线现在到了最核心的一步。会话创建逻辑见 hugot_ort.go——注意一个细节一个进程中同一时间只能有一个原生 ORT 会话ONNX Runtime 每进程单环境所以长生命周期服务只需创建一个会话复用给所有流水线。session, err : hugot.NewORTSession(ctx) check(err) defer session.Destroy() config : hugot.TextGenerationConfig{ ModelPath: modelPath, Name: chat, Options: []hugot.TextGenerationOption{ pipelines.WithSystemPrompt(You are a helpful assistant.), pipelines.WithMaxLength(2000), }, } pipeline, err : session.NewPipeline(config) check(err)TextGenerationPipeline由 pipelines/textGeneration.go 定义常用选项一览选项作用WithSystemPrompt(s)为每轮对话预置系统提示词WithMaxLength(n)限制生成 token 数默认 4096WithStreaming()开启流式输出逐 token 返回WithTemperature(t)/WithTopP(p)/WithSeed(s)控制采样随机性WithStopSequences(ss)指定停止序列对话通过消息backends.Message定义见 backends/generative.go进行支持多轮历史与批量输入inputs : [][]backends.Message{ {{Role: user, Content: what is the capital of the Netherlands?}}, } output, err : pipeline.RunMessages(ctx, inputs) fmt.Println(output.Responses[0]) // The capital of the Netherlands is Amsterdam.上面这段正是官方测试 tests/pipelines.go 的玩法用 Qwen3-4B-int4 问答荷兰首都断言答案包含 Amsterdam。完整的 ORT 文本测试入口在 tests/ort/hugot_ort_text_test.go。流式输出像 ChatGPT 一样逐字打印开启WithStreaming()后返回值不再是完整响应而是两条 channel——TokenStream与ErrorStream见 pipelines/textGeneration.go用 Go 原生 channel 实现自然逐字渲染for token : range output.TokenStream { fmt.Print(token.Token) // 实时打印每个 token }第 4 步进阶玩法 并发批量推理默认逐会话生成创建会话时加上options.WithGenerativeEngine()可启用 ONNX Runtime GenAI 的 Engine 模式获得并发请求与推理批处理能力仅纯文本消息参考 tests/ort/hugot_ort_text_test.go。CPU 吞吐调优高并发场景下每核一个 goroutine 共享同一流水线建议按 README 的 Performance Tuning 章节设置WithInterOpNumThreads(1)、WithIntraOpNumThreads(1)、WithCpuMemArena(false)等选项可大幅提升吞吐。工具调用与约束生成WithTools()支持 Hermes 风格工具定义 JSONWithGuidance()支持用 Lark 语法、JSON Schema 或正则约束输出强制模型输出合法结构如 JSON。官方测试 tests/pipelines.go 演示了让模型查时间 查巴黎天气并严格输出两个工具调用的完整案例。多模态Message结构体带ImageURLs/AudioURLs字段结合 Phi-3.5-vision-onnx 等模型即可跑视觉问答视觉测试见 tests/ort/hugot_ort_multimodal_test.go。NVIDIA GPU 加速安装 CUDA 版 ONNX Runtime 与匹配的 CUDA/cuDNN 库后创建会话时传入options.WithCuda(map[string]string{device_id: 0})即可。ORT 还支持 TensorRT、CoreML、OpenVINO 等执行器。微调训练Hugot 已内置训练器基于 goMLX可对 FeatureExtraction 类模型做语义相似度微调服务于 RAG 与语义搜索场景示例在 tests/training/hugot_training_test.go。常见问题速查避坑指南Q1编译时提示找不到NewORTSessionORT 后端受构建标签保护-tags ORT或-tags ALL才能启用不加标签编译的是 hugot_ort_disabled.go 中的存根。Q2报 another session is currently activeONNX Runtime 每进程只允许一个原生环境销毁旧会话session.Destroy()后再创建新会话或全程复用同一个会话。Q3模型下载失败或想换模型来源Hugot 只认 ONNX 格式。用 Optimum 把 PyTorch 模型导出 ONNX 后把genai_config.json、tokenizer 等文件与模型放好直接以本地路径传给TextGenerationConfig.ModelPath即可跳过下载。Q4能用纯 Go 后端跑 LLM 吗暂不能。生成式流水线目前仅 ORT 后端支持纯 Go 后端面向小批量、小模型的轻量场景。Q5内存够吗优先选 int4 量化模型如本文的 Qwen3-4B-int44B 级别量化模型在 16GB 内存的普通服务器上即可流畅本地推理GPU 上训练与推理都更快更省内存。项目结构速览路径内容hugot.go会话核心创建/注册/销毁流水线统计信息hugot_ort.goORT 后端会话入口与单会话互斥控制pipelines/textGeneration.go文本生成流水线与全部生成选项backends/后端抽象、消息与生成选项定义options/options.go会话级配置线程、CUDA、库路径等downloader.goHugging Face 模型下载器tests/ort/各流水线的 ORT 后端集成测试testcases/downloadModels.go官方测试所用模型清单写在最后Hugot 让在 Go 中本地运行开源大语言模型变成了一件很自然的事NewORTSession→DownloadModel→NewPipeline→RunMessages四步完成一次对话模型不出内网、依赖不进 Docker 之外的生态还顺带拿到了流式输出、工具调用与 GPU 加速这些生产级能力。如果你的生产栈是 Go这就是把 Hugging Face 模型平移进 Go 的完整路径 赞分享【免费下载链接】hugotOnnx transformer pipelines in Golang项目地址https://gitcode.com/gh_mirrors/hu/hugot点击查看免费下载相关推荐开发者指南如何用ONNX Runtime GenAI接入本地大模型Qwen2.5-Coder-1.5B-Instruct_rai_1.8.0_hybrid开发者指南如何用ONNX Runtime GenAI接入本地大模型Qwen2.5 Coder 1.5B Instruct_rai_1.8.0_hybrid 本如何在Go中直接从Hugging Face获取ONNX模型Hugot DownloadModel实战手册如何在Go中直接从Hugging Face获取ONNX模型Hugot DownloadModel实战手册 Hugot 是一个 Go 语言库它把 HugginGutenberg 区块编辑器数据层实战用 Selectors 和 Actions 驾驭 core/block-editor 的五个任务域Gutenberg 区块编辑器数据层实战用 Selectors 和 Actions 驾驭 core/block editor 的五个任务域 你的插件想在用户删后端前端上一篇脚本不生效、直播突然黑屏TwitchAdSolutions调试排错完全指南下一篇MOSS-Image-Base 文生图组件级加载实战from_components_pretrained 灵活组合完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
mosquitto的x86_64和aarc64的编译 -DWITH_TLS=OFF /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 1:50:39
Freedeck云存档同步指南:跨设备自动备份与一键恢复,进度再也不怕丢 【免费下载链接】Freedeck 学习版游戏一站式平台 项目地址: https://gitcode.com/gh_mirrors/fre/Freedeck 点击查看 免费下载 Freedeck 是一款专为 Steam Deck 打造的 Decky Loader 插件,除游戏库管理与下载外,最实用的功能之一就是云存档同… · 2026/11/5 1:50:39
霞鹜文楷 LXGW WenKai 免费商用开源楷体中文字体:6 个文件选择与安装避坑指南 霞鹜文楷 LXGW WenKai 免费商用开源楷体中文字体:6 个文件选择与安装避坑指南 【免费下载链接】LxgwWenKai An open-source Chinese font derived from Fontworks Klee One. 一款开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生。 项目地址: htt… · 2026/11/5 1:49:39
混合高斯模型(GMM)聚类算法原理与实战应用 1. 混合高斯模型聚类实战指南在数据分析领域,聚类算法一直扮演着重要角色。不同于K-means这类硬聚类方法,混合高斯模型(GMM)通过概率分布的方式描述数据,能够更灵活地处理复杂的数据结构。最近我在一个客户细分项目中成… · 2026/11/5 2:38:01
高并发投票系统架构设计与运营策略解析 1. 项目背景与活动解析"58万票!星特杯投票进入冲刺阶段"这个标题背后反映的是一个典型的线上投票竞赛活动。这类活动在互联网时代已经成为品牌营销、用户互动和社群运营的常见手段。从标题中的"58万票"这个数据量级来看,这显然是一个… · 2026/11/5 2:38:01
NoSQL数据库核心类型与应用场景解析 1. NoSQL数据库概述:为什么它成为现代架构的必选项十年前,我们还在为MySQL的单表千万级数据发愁,为分库分表方案争论不休。如今,互联网应用的流量和数据量早已今非昔比——双十一的订单峰值达到每秒58.3万笔,抖音日活用… · 2026/11/5 2:38:01
ArkTS性能优化实战:从原理到HarmonyOS应用 1. 为什么你的ArkTS项目跑得慢?作为一名在HarmonyOS生态深耕多年的开发者,我见过太多团队把ArkTS简单地当作TypeScript的方言来写。直到性能问题爆发时,他们才意识到:ArkTS和TS虽然语法相似,但底层运行机制天差地别。最… · 2026/11/5 2:38:01
MIPS 54条多周期CPU:教学级处理器的慢动作解析 简介:本资源是面向计算机专业本科生的MIPS多周期CPU硬件设计实践项目,聚焦《计算机组成原理》课程核心能力训练,解决从指令集理解、数据通路构建到FPGA板级实现的全流程实践难点。压缩包共539个文件,26.94MB,涵盖66个V… · 2026/11/5 2:38:01
GitHub Copilot Agent模式提升开发效率实战 1. 项目概述作为一名长期使用VSCode进行开发的程序员,我发现GitHub Copilot的Agent模式正在彻底改变我们的编码方式。这个工具集不仅仅是简单的代码补全,它更像是一位24小时待命的编程助手,能够理解上下文、预测需求,甚至主动提出… · 2026/11/5 2:37:01
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38