ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

GPT4All Node.js 绑定如何离线加载模型(本地 models3.json)?

GPT4All Node.js 绑定如何离线加载模型(本地 models3.json)? GPT4All Node.js 绑定如何离线加载模型本地 models3.json【免费下载链接】gpt4allGPT4All: Run Local LLMs on Any Device. Open-source and available for commercial use.项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4allGPT4All 的 Node.js 绑定npm 包gpt4all默认会在启动时请求https://gpt4all.io/models/models3.json来获取模型配置列表。如果你的应用部署在无网络的机器上这个请求会失败。官方给出的离线方案是联网时先把models3.json下载到本地之后通过loadModel的modelConfigFile选项指向这个本地文件。本文按这条路径说明离线加载模型的完整做法适用环境为 Node.js 18.0.0见 bindings README 的 Requirements 一节。离线加载的前提条件离线加载依赖两个本地文件缺一不可本地模型清单models3.json记录每个模型的filename、md5sum、url、requires等字段绑定的运行时用它查找模型配置。仓库内就有一份同款文件 gpt4all-chat/metadata/models3.json可作为格式参考。模型权重文件.gguf必须已经存在于modelPath指向的目录中。loadModel的modelPath默认值是用户主目录下的.cache/gpt4all见 config.js 中的DEFAULT_DIRECTORY也就是说模型文件默认要放在~/.cache/gpt4all/。注意第二条不是可选项如果模型文件不在本地而allowDownload保持默认值true绑定会尝试联网下载模型——在离线环境中这一步会失败。所以“先联网下载好模型再断开网络”是离线方案的前提。第一步联网时下载 models3.json在能访问网络的机器上执行命令来自 README 的 Offline usage 一节curl -L https://gpt4all.io/models/models3.json -o ./models3.json下载结果保存到当前工作目录的./models3.json。这个文件需要随你的项目一起部署到离线机器上。第二步离线加载模型并生成在离线机器上安装依赖三种包管理器任选其一均来自 READMEnpm install gpt4alllatest然后按 README 示例编写加载代码关键点是modelConfigFile指向本地的models3.jsonimport { createCompletion, loadModel } from gpt4all //make sure u downloaded the models before going offline! const model await loadModel(mistral-7b-openorca.gguf2.Q4_0.gguf, { verbose: true, device: gpu, modelConfigFile: ./models3.json }); await createCompletion(model, What is 1 1?, { verbose: true }) model.dispose();代码中各选项的作用第一个参数是模型文件名即models3.json条目中的filename不是模型展示名。若名字不带.bin/.gguf后缀绑定会自动补.gguf见 util.js 的 appendBinSuffixIfMissing因此这里的值必须与清单里的filename一致。modelConfigFile: ./models3.json让绑定从本地文件而不是远程 URL 读取模型清单。verbose: true打印加载日志便于核对如Found model at path排查时建议保留。device: gpu示例中的可选配置。device默认值是cpu无 GPU 或不确定显存是否足够时建议省略或设为cpu按类型声明若 GPU 显存不足以容纳模型会抛错并使实例失效。如果模型文件不在默认缓存目录可以在选项中显式指定modelPath类型声明中说明它是“Where to look for model files”例如指向你存放.gguf文件的目录。结果验证与常见错误判断retrieveModel见 util.js的处理逻辑给出了几种可核对的现象本地清单文件不存在直接抛错Model list file ./models3.json does not exist.。检查离线机器上是否部署了该文件、相对路径是否正确。模型名未在清单中匹配到打印警告Failed to load model config for modelName. Using defaults.并使用默认模型配置systemPrompt为空、promptTemplate为### Human:\n%1\n\n### Assistant:\n见 config.js。此时模型可以加载但提示词模板与模型要求不符时输出质量可能异常应按 README Known Issues 的说法重新安装模型或从官网重新下载。模型文件不在本地且允许下载绑定会尝试从网络下载离线环境会失败确认模型文件已在modelPath目录中即可。成功标志开启verbose后能看到Found model at path与Finished completion等调试日志且createCompletion返回结果对象含choices与usage字段而不抛异常。边界与已知问题退出进程后 GPU 占用仍偏高务必调用model.dispose()这是 README Known Issues 中列出的处理方式。调用生成后模型挂起README 记录了一个已知问题——nPast设置过高可能导致模型挂起2024-03-16Linux Mint、Ubuntu 22.04。非必要时不要手动设置nPast。完全离线连本地models3.json都不依赖目前仍是未完成的项README 的 Roadmap 中 “Purely offline” 尚未勾选因此本文的“本地models3.json”方案是当前绑定的离线路径。完成离线加载验证后models3.json与模型.gguf文件都可以随部署包一起分发后续切换模型时只需在清单文件中确认filename并在loadModel中传入对应文件名。【免费下载链接】gpt4allGPT4All: Run Local LLMs on Any Device. Open-source and available for commercial use.项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4all创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表