Skip to content
This page has been auto-translated and may contain errors.View in English

在本地运行开源模型项目

通过这个页面可以运行任一个提取的开源模型项目。其中一个在你的浏览器中加载 Transformers.js 模型;另一个运行 Express 服务器,调用你电脑上的 Ollama。找到你拥有的项目,然后只按照该项目的设置步骤操作。

你需要先准备什么

安装支持的 LTS 版本 Node.js。推荐使用 Node 24,它包含 npm。如果你是 Node 和 npm 的新手,Running the code locally 会详细指导你如何安装和检查两者。

Transformers.js 项目需要一个当前版本的浏览器、用于首次库和模型下载的互联网连接,以及足够的浏览器存储空间和内存。它不需要 API 密钥。

Ollama 项目还需要 Ollama、足够的磁盘空间和内存来运行 mistral 模型,以及本地 Ollama 服务在运行状态。它不需要提供者账户或 API 密钥。

Juno你需要先准备什么 首先安装 Node.js LTS,然后选择适合你项目的设置:为 Transformers.js 准备当前版本浏览器和互联网连接,或为 Ollama 课程准备 Ollama 应用并保持其服务运行。

两个设置都不需要 API 密钥,所以这里没有密钥需要创建。

Juno你需要先准备什么 两个项目都在你自己的硬件上运行模型,所以不需要配置提供者密钥。Transformers.js 将模型下载到浏览器标签页;Ollama 课程需要在服务器能够访问它之前,单独安装并运行 Ollama 服务。

无论哪种情况,都要安装 Node LTS,因为 npm 驱动两个设置。

Juno你需要先准备什么 两种本地计算方式意味着两个不同的资源预算。浏览器设置依赖于远程库文件和模型文件,加上浏览器缓存、存储和内存;Ollama 设置需要原生服务、下载的模型权重,以及足够的空闲内存和处理器容量来进行推理。

开始前检查你的机器是否能容纳该模型。

确定你提取的项目

在包含 package.json 的提取文件夹中打开终端:

bash
$ cd path-to-your-downloaded-project

如果文件夹名称没有告诉你提取的是哪个课程,打开 index.js。如果有 express 导入,这是 Ollama 课程,需要下面的包修复。如果从 jsDelivr 导入 @xenova/transformers,这是浏览器应用,无需任何更改即可运行。

Juno确定你提取的项目 在包含 package.json 的文件夹中打开终端,运行任何命令前检查你的位置。

然后查看 index.js 的顶部:express 指向 Ollama 部分,Transformers.js 指向浏览器部分。

Juno确定你提取的项目 两个下载从外面看起来很相似,但运行方式不同:浏览器模型项目以 Vite 开始,而 Ollama 项目是一个 Node 服务器,还需要单独的 Ollama 服务。

选择与你的项目匹配的部分,只按照那一个来做,因为设置步骤不能混合。

Juno确定你提取的项目 从导入来识别项目,而不是文件夹名。两个 ZIP 都有一个 Vite 形状的 package.json,所以只有 index.js 能区分它们。

将 Ollama 修复应用到浏览器项目会用无法提供页面的 Node 脚本替换一个工作的 Vite 启动脚本。

运行 Transformers.js 项目

将这些说明用于 AI Models In The Browser With Transformers.js。这个项目需要 Node 和 npm 来运行 Vite。

安装并启动它:

bash
$ npm install
$ npm start

打开 Vite 打印的 Local URL,通常是 http://localhost:5173/。页面首先从 jsDelivr 导入 Transformers.js,然后下载 Xenova/yolos-tiny 物体检测模型。在选择 Detect Objects 前,等待状态从 Loading model... 变为 Ready;按钮在此之前保持禁用。

首次加载需要互联网连接,可能比普通前端页面花更长时间。浏览器缓存可以使后续加载更快。如果状态从未达到 Ready,打开 DevTools Network 标签:被阻止的 jsDelivr 请求指向 CDN 或内容阻止程序问题,模型文件缓慢增长意味着权重下载仍在进行中。用 Ctrl+C 停止 Vite。

无需提供者凭证

模型在你的浏览器中执行,而不是通过托管推理 API。这个课程没有 .env 文件或 API 密钥需要配置。

Juno运行 Transformers.js 项目 运行 npm install,然后 npm start,打开 Local URL,等待状态显示 Ready 后再选择任何内容。

首次模型下载是慢的。如果 Ready 始终没有出现,检查 DevTools 中的 Network 标签。

Juno运行 Transformers.js 项目 三个东西按顺序加载:Vite 提供页面,jsDelivr 提供库,模型权重下载到浏览器并在那里运行。

首次加载受你的下载速度限制,所以缓慢的状态通常意味着下载仍在进行中,而不是出现了 bug。

Juno运行 Transformers.js 项目 页面可以在模型准备好之前打开,因为 index.js 在启用按钮之前在顶层 await 管道。

Ready 始终没有出现时,Network 标签会指出有问题的请求:被阻止的 jsDelivr 请求指向 CDN 或内容阻止程序,模型文件缓慢增长指向缓慢的权重下载。

修复并运行 Ollama 项目

将这些说明用于 Download and Run AI Models on Your Computer with Ollama。导出的 ZIP 包含课程的 Node 代码,但其生成的 package.json 仍然描述一个 Vite 项目。不经过小的包修复无法在本地运行。

安装 Ollama 后,确保其本地服务在运行。下载课程代码指定的模型:

bash
$ ollama pull mistral
$ ollama ls

第二个命令应该列出 mistral。根据你的操作系统,打开 Ollama 应用会自动启动服务。如果没有,在单独的终端中运行 ollama serve 并保持运行。

在提取的项目中,将 "type": "module" 添加为 package.json 的顶级属性,作为 "scripts" 的同级:

json
{
  "type": "module",
  "scripts": {
    "start": "vite"
  }
}

然后将启动脚本从:

json
"start": "vite"

改为:

json
"start": "node index.js"

安装 index.js 导入的两个依赖:

bash
$ npm install express ollama
$ npm start

服务器打印:

text
Server is running on port 3000

测试路由而不调用模型:

text
http://localhost:3000/

它应该要求你提供一个 question 参数。然后尝试真实的本地模型请求:

text
http://localhost:3000/?question=Why%20is%20the%20sky%20blue%3F

Express 服务器等待 Ollama 加载模型并生成其回复。首次响应可能明显较慢。用 Ctrl+C 停止 Express。当你不再需要时,用 Ctrl+C 停止单独启动的 ollama serve 进程。

不需要提供者 API 密钥或 .env 文件。模型权重和推理保留在运行 Ollama 的机器上。

Juno修复并运行 Ollama 项目 下载 mistral 模型并保持 Ollama 运行,然后修复 package.json:添加模块类型并将启动脚本指向 node index.js

安装 expressollama,启动服务器,在端口 3000 问它一个问题。缓慢的首次答案意味着模型正在加载,不是什么地方出错了。

Juno修复并运行 Ollama 项目 两个进程在这里协作:Ollama 提供模型,Express 暴露课程路由。ZIP 的包元数据是为 Vite 项目编写的,所以修复将其指向 Node 入口点并安装两个导入的包。

如果请求挂起,检查两个进程中的哪一个停止了。

Juno修复并运行 Ollama 项目 导出描述了错误类型的应用,所以两个包编辑都是必需的:模块类型让 Node 加载 ESM 导入,启动脚本运行 index.js 而不是 Vite。

即使在修复后,Express 也只有在 Ollama 单独运行且 mistral 已下载时才会回复;服务器永远不会为你启动模型服务。

故障排除

Transformers.js 页面停留在 Loading model... 检查浏览器控制台和 DevTools Network 标签。内容阻止程序或受限网络可能阻止 jsDelivr 或模型下载。尝试使用有足够空闲存储空间和内存的当前版本浏览器。

Ollama 项目说 Cannot find package 'express''ollama' 在包含 package.json 的文件夹中运行 npm install express ollama

Node 说 Cannot use import statement outside a modulepackage.json 中添加 "type": "module"

npm start 启动 Vite 或抱怨缺少 index.html 将启动脚本改为 node index.js。Ollama 课程是 Node 服务器,不是 Vite 页面。

路由无法连接到 Ollama: 确认 Ollama 应用或 ollama serve 在运行,然后使用 ollama ls 确认 mistral 模型已安装。

端口 3000 已被占用: 停止另一个进程或修改 index.js 中的 port 常量,重新启动 Express,并打开匹配的 URL。

Juno故障排除 将修复与项目匹配:对于 Transformers.js,查看浏览器的 Network 标签和 Console;对于 Ollama,检查包修复、安装的模型、运行的服务和端口。

这里的大多数错误来自于遗漏的一个步骤。

Juno故障排除 在改变任何东西之前,找出是哪个运行时失败了:Vite 和浏览器资源属于 Transformers.js 项目,而 Node、Express 和 Ollama 服务属于另一个。

应用于错误项目的修复通常会产生新的错误。

Juno故障排除 对于 Transformers.js,故障在于下载或浏览器内存。对于 Ollama,按顺序检查链:Node 接受模块语法,Express 占用端口 3000,服务在运行,mistral 出现在 ollama ls 中。

稍后的症状通常是同一个较早故障的不同形式。