web-llm

GitHub
17.7k 1.2k 简单 1 次阅读 今天Apache-2.0开发框架语言模型
AI 解读 由 AI 自动生成,仅供参考

WebLLM 是一款高性能的浏览器端大语言模型推理引擎,它让强大的 AI 模型能够直接在网页浏览器中运行,无需依赖后端服务器。通过将计算任务完全移至本地并利用 WebGPU 进行硬件加速,WebLLM 有效解决了传统云端部署带来的数据隐私泄露风险、网络延迟以及高昂的服务器成本问题,同时确保了用户数据的绝对私密性。

这款工具特别适合前端开发者、全栈工程师以及希望构建隐私优先型 AI 应用的研究人员。借助 WebLLM,开发者可以轻松在网页中集成智能助手、聊天机器人或数据分析工具,而普通用户也能通过支持该技术的网站体验流畅的本地化 AI 服务。

WebLLM 的技术亮点在于其全面兼容 OpenAI API 标准,这意味着开发者可以使用熟悉的接口调用 Llama 3、Qwen(通义千问)、Phi 3 等多种开源模型,并直接享受流式输出、结构化 JSON 生成等高级功能。此外,它支持通过 NPM 或 CDN 快速集成,并提供 Web Worker 多线程支持以优化界面响应速度。作为 MLC LLM 生态的重要一环,WebLLM 真正实现了“一次编写,处处运行”,让高质量的 AI 推理能力触手可及。

使用场景

一家初创教育科技公司希望在网页端为用户提供个性化的 AI 作文辅导助手,要求响应迅速且严格保护学生隐私。

没有 web-llm 时

  • 高昂的服务器成本:每增加一名用户就需要扩容后端 GPU 集群来支撑推理,导致运营预算迅速枯竭。
  • 隐私合规风险:学生的作文内容必须上传至云端处理,存在数据泄露隐患,难以满足严格的未成年人数据保护法规。
  • 网络延迟影响体验:在网络波动环境下,请求往返云端造成明显的回答卡顿,破坏了写作时的流畅心流。
  • 部署维护复杂:需要专门团队维护后端推理服务、负载均衡及模型版本更新,分散了核心产品开发精力。

使用 web-llm 后

  • 零服务器推理成本:利用 WebGPU 直接调用用户本地显卡进行计算,完全消除了后端推理带来的巨额算力开支。
  • 原生隐私安全:所有数据处理均在浏览器本地完成,敏感作文内容从未离开用户设备,从架构上杜绝了泄露风险。
  • 极速实时交互:省去了网络传输环节,结合硬件加速实现了低延迟的流式输出,让修改建议如本地软件般丝滑。
  • 轻量化集成部署:通过 NPM 包即可将 Llama 3 或 Qwen 等模型嵌入现有网页,无需搭建复杂的后端基础设施。

web-llm 通过将高性能大模型推理能力下沉至浏览器端,让开发者能以零服务器成本构建出既保护隐私又具备原生应用体验的 AI 产品。

运行环境要求

操作系统
  • 未说明 (基于浏览器的跨平台工具,支持任何现代浏览器运行的操作系统)
GPU

必需:支持 WebGPU 的显卡 (无需特定型号或 CUDA,依赖浏览器对 WebGPU 的支持)

内存

未说明 (取决于所选模型大小,通常在浏览器中运行需足够内存加载模型权重)

依赖
notes这是一个纯前端运行的工具,无需服务器后端。核心依赖是浏览器必须支持 WebGPU (如新版 Chrome, Edge)。首次运行需下载模型文件,支持通过 Cache API 或 IndexedDB 缓存。可通过 npm、yarn 安装或直接使用 CDN 引入。
python不需要 (纯 JavaScript/TypeScript 项目)
@mlc-ai/web-llm
WebGPU API
WebAssembly
web-llm hero image

快速开始

WebLLM

NPM Package Join Discord Related Repository: WebLLM Chat Related Repository: MLC LLM

高性能的浏览器内LLM推理引擎。

文档 | 博客文章 | 论文 | 示例

概述

WebLLM 是一款高性能的浏览器内LLM推理引擎,它通过硬件加速将语言模型推理直接带到网页浏览器中。 所有计算都在浏览器内部完成,无需服务器支持,并且借助WebGPU进行加速。

WebLLM 完全兼容OpenAI API。 也就是说,你可以在本地使用相同的OpenAI API调用任何开源模型,并享受流式响应、JSON模式、函数调用(开发中)等功能。

这为我们带来了许多有趣的机会,可以为每个人构建AI助手,在保护隐私的同时享受GPU加速带来的性能提升。

你可以将WebLLM作为一个基础的NPM包,并参考下面的示例来构建自己的Web应用。该项目是MLC LLM的配套项目,后者实现了LLM在各种硬件环境中的通用部署。

核心特性

  • 浏览器内推理:WebLLM是一款高性能的浏览器内语言模型推理引擎,利用WebGPU进行硬件加速,能够在不依赖服务器的情况下直接在浏览器中运行强大的LLM任务。

  • 完全兼容OpenAI API:通过OpenAI API无缝集成你的应用与WebLLM,支持流式响应、JSON模式、对logit级别的控制、种子设置等功能。

  • 结构化JSON生成:WebLLM支持最先进的JSON模式结构化生成功能,该功能在模型库的WebAssembly部分实现,以确保最佳性能。你可以在HuggingFace上访问WebLLM JSON Playground,尝试使用自定义JSON模式生成JSON输出。

  • 广泛的模型支持:WebLLM原生支持一系列模型,包括Llama 3、Phi 3、Gemma、Mistral、Qwen(通义千问)等,使其适用于多种AI任务。完整的支持模型列表请参阅MLC Models

  • 自定义模型集成:轻松集成和部署MLC格式的自定义模型,使你能够根据特定需求和场景调整WebLLM,从而提高模型部署的灵活性。

  • 即插即用的集成方式:可以通过NPM、Yarn等包管理器,或直接通过CDN轻松将WebLLM集成到你的项目中,并配有全面的示例和模块化的设计,方便与UI组件对接。

  • 流式传输与实时交互:支持流式聊天补全,允许实时生成输出,从而增强聊天机器人和虚拟助手等交互式应用的体验。

  • Web Worker与Service Worker支持:通过将计算任务卸载到独立的工作线程或服务工作者中,优化UI性能并高效管理模型的生命周期。

  • Chrome扩展支持:利用WebLLM通过自定义Chrome扩展来扩展浏览器的功能,我们提供了构建基础和高级扩展的示例。

内置模型

完整的可用模型列表请参见MLC Models。WebLLM支持其中的一部分模型,具体列表可在prebuiltAppConfig.model_list中找到。

目前主要支持的模型系列如下:

  • Llama:Llama 3、Llama 2、Hermes-2-Pro-Llama-3
  • Phi:Phi 3、Phi 2、Phi 1.5
  • Gemma:Gemma-2B
  • Mistral:Mistral-7B-v0.3、Hermes-2-Pro-Mistral-7B、NeuralHermes-2.5-Mistral-7B、OpenHermes-2.5-Mistral-7B
  • Qwen(通义千问):Qwen2 0.5B、1.5B、7B

如果你需要更多模型,可以通过提交issue请求新模型,或者查看自定义模型部分,了解如何编译并使用自己的模型与WebLLM结合。

从示例开始

通过这个简单的聊天机器人示例,学习如何使用WebLLM将大型语言模型集成到你的应用中,并生成聊天回复:

JSFiddle上的示例聊天机器人 Codepen上的示例聊天机器人

如果你想了解一个更复杂、规模更大的项目示例,请查看WebLLM Chat

更多不同用例的示例可在examples文件夹中找到。

开始使用

WebLLM提供了一个极简且模块化的接口,用于在浏览器中访问聊天机器人。 该软件包采用模块化设计,可与任何UI组件无缝对接。

安装

包管理器

# npm
npm install @mlc-ai/web-llm
# yarn
yarn add @mlc-ai/web-llm
# 或 pnpm
pnpm install @mlc-ai/web-llm

然后在你的代码中导入模块。

// 导入全部内容
import * as webllm from "@mlc-ai/web-llm";
// 或仅导入你需要的部分
import { CreateMLCEngine } from "@mlc-ai/web-llm";

CDN交付

借助jsdelivr.com,WebLLM可以直接通过URL引入,并在云开发平台如jsfiddle.netCodepen.ioScribbler上开箱即用:

import * as webllm from "https://esm.run/@mlc-ai/web-llm";

也可以动态导入:

const webllm = await import("https://esm.run/@mlc-ai/web-llm");

创建 MLCEngine

WebLLM 中的大多数操作都是通过 MLCEngine 接口调用的。你可以通过调用 CreateMLCEngine() 工厂函数来创建一个 MLCEngine 实例并加载模型。

(注意:加载模型需要下载,首次运行且未使用缓存时可能需要较长时间。你应该妥善处理这个异步调用。)

import { CreateMLCEngine } from "@mlc-ai/web-llm";

// 用于更新模型加载进度的回调函数
const initProgressCallback = (initProgress) => {
  console.log(initProgress);
};
const selectedModel = "Llama-3.1-8B-Instruct-q4f32_1-MLC";

const engine = await CreateMLCEngine(
  selectedModel,
  { initProgressCallback: initProgressCallback }, // engineConfig
);

在底层,这个工厂函数会先同步地创建一个引擎实例,然后再异步地加载模型。你也可以在应用中分别执行这些步骤。

import { MLCEngine } from "@mlc-ai/web-llm";

// 这是一个立即返回的同步调用
const engine = new MLCEngine({
  initProgressCallback: initProgressCallback,
});

// 这是一个异步调用,可能需要较长时间才能完成
await engine.reload(selectedModel);

缓存后端策略

WebLLM 通过 AppConfig.cacheBackend 支持三种缓存后端:

  • "cache":浏览器 Cache API(默认)。
  • "indexeddb":浏览器 IndexedDB
  • "cross-origin":实验性的 Chrome 跨域存储 API 扩展后端。你需要安装 跨域存储扩展 才能使用它。(如果未安装该扩展,WebLLM 会自动回退到默认缓存。)

示例:

import { CreateMLCEngine, prebuiltAppConfig } from "@mlc-ai/web-llm";

const appConfig = { ...prebuiltAppConfig, cacheBackend: "cross-origin" };
const engine = await CreateMLCEngine("Llama-3.1-8B-Instruct-q4f32_1-MLC", {
  appConfig,
});

注意事项:

  • "cross-origin" 后端需要安装并启用兼容的浏览器扩展。
  • 跨域后端目前不支持以编程方式删除张量缓存;清除操作由扩展管理。

对话完成

成功初始化引擎后,你现在可以使用 OpenAI 风格的聊天 API,通过 engine.chat.completions 接口调用对话完成。有关完整参数列表及其说明,请参阅下方章节以及 OpenAI API 参考文档

(注意:此处不支持 model 参数,该参数将被忽略。请改用上面 创建 MLCEngine 中所示的 CreateMLCEngine(model)engine.reload(model)。)

const messages = [
  { role: "system", content: "你是一位乐于助人的 AI 助手。" },
  { role: "user", content: "你好!" },
];

const reply = await engine.chat.completions.create({
  messages,
});
console.log(reply.choices[0].message);
console.log(reply.usage);

流式传输

WebLLM 还支持流式生成对话完成结果。要使用此功能,只需在调用 engine.chat.completions.create 时传递 stream: true 即可。

const messages = [
  { role: "system", content: "你是一位乐于助人的 AI 助手。" },
  { role: "user", content: "你好!" },
];

// chunks 是一个异步生成器对象
const chunks = await engine.chat.completions.create({
  messages,
  temperature: 1,
  stream: true, // <-- 启用流式传输
  stream_options: { include_usage: true },
});

let reply = "";
for await (const chunk of chunks) {
  reply += chunk.choices[0]?.delta.content || "";
  console.log(reply);
  if (chunk.usage) {
    console.log(chunk.usage); // 只有最后一个块包含 usage 信息
  }
}

const fullReply = await engine.getMessage();
console.log(fullReply);

高级用法

使用 Worker

你可以将繁重的计算任务放到 worker 脚本中,以优化应用性能。为此,你需要:

  1. 在 worker 线程中创建一个与前端通信并处理请求的处理器。
  2. 在主应用中创建一个 Worker Engine,它会在后台向 worker 线程中的处理器发送消息。

有关不同类型 Worker 的详细实现,请参阅以下章节。

专用 Web Worker

WebLLM 提供对 WebWorker 的 API 支持,因此你可以将生成过程挂载到一个独立的 worker 线程中,这样 worker 线程中的计算就不会阻塞 UI。

我们在 worker 线程中创建了一个与前端通信并处理请求的处理器。

// worker.ts
import { WebWorkerMLCEngineHandler } from "@mlc-ai/web-llm";

// 居住在 worker 线程中的处理器
const handler = new WebWorkerMLCEngineHandler();
self.onmessage = (msg: MessageEvent) => {
  handler.onmessage(msg);
};

在主逻辑中,我们创建了一个 WebWorkerMLCEngine,它实现了相同的 MLCEngineInterface。其余逻辑保持不变。

// main.ts
import { CreateWebWorkerMLCEngine } from "@mlc-ai/web-llm";

async function main() {
  // 此处使用 WebWorkerMLCEngine 而不是 MLCEngine
  const engine = await CreateWebWorkerMLCEngine(
    new Worker(new URL("./worker.ts", import.meta.url), {
      type: "module",
    }),
    selectedModel,
    { initProgressCallback }, // engineConfig
  );

  // 其余部分保持不变
}

使用 Service Worker

WebLLM 提供了对 ServiceWorker 的 API 支持,因此你可以将生成过程挂载到 Service Worker 中,以避免每次访问页面时都重新加载模型,并优化应用的离线体验。

(注意,Service Worker 的生命周期由浏览器管理,可能会在任何时候被终止而不会通知 Web 应用。ServiceWorkerMLCEngine 会通过定期发送心跳事件来尝试保持 Service Worker 线程的存活,但你的应用也应包含适当的错误处理逻辑。更多详情请参阅 ServiceWorkerMLCEngine 中的 keepAliveMsmissedHeatbeat。)

我们在 Worker 线程中创建了一个处理器,用于与前端通信并处理请求。

// sw.ts
import { ServiceWorkerMLCEngineHandler } from "@mlc-ai/web-llm";

let handler: ServiceWorkerMLCEngineHandler;

self.addEventListener("activate", function (event) {
  handler = new ServiceWorkerMLCEngineHandler();
  console.log("Service Worker is ready");
});

然后在主逻辑中,我们注册 Service Worker 并使用 CreateServiceWorkerMLCEngine 函数创建引擎。其余逻辑保持不变。

// main.ts
import {
  MLCEngineInterface,
  CreateServiceWorkerMLCEngine,
} from "@mlc-ai/web-llm";

if ("serviceWorker" in navigator) {
  navigator.serviceWorker.register(
    new URL("sw.ts", import.meta.url), // Worker 脚本
    { type: "module" },
  );
}

const engine: MLCEngineInterface = await CreateServiceWorkerMLCEngine(
  selectedModel,
  { initProgressCallback }, // 引擎配置
);

你可以在 examples/service-worker 中找到如何在 Service Worker 中运行 WebLLM 的完整示例。

Chrome 扩展

你还可以在 examples/chrome-extensionexamples/chrome-extension-webgpu-service-worker 中找到使用 WebLLM 构建 Chrome 扩展的示例。后者利用了 Service Worker,因此扩展可以在后台持续运行。此外,你还可以探索另一个完整的 Chrome 扩展项目——WebLLM Assistant,它正是基于 WebLLM 构建的,请参见 这里

完全兼容 OpenAI

WebLLM 被设计为与 OpenAI API 完全兼容。因此,除了构建一个简单的聊天机器人之外,你还可以使用 WebLLM 实现以下功能:

  • 流式输出:以 AsyncGenerator 的形式实时返回分块输出。
  • JSON 模式:高效地确保输出为 JSON 格式,更多信息请参阅 OpenAI 文档
  • 可复现性种子:通过设置 seed 字段来确保输出的可复现性。
  • 函数调用(开发中):使用 toolstool_choice 字段进行函数调用(已提供初步支持);或者不使用 toolstool_choice 进行手动函数调用(保留最大灵活性)。

完整性验证

WebLLM 支持使用 SRI(子资源完整性) 哈希对模型文件进行可选的完整性验证。当 ModelRecord 中设置了 integrity 字段时,WebLLM 会在加载之前,根据提供的哈希值验证下载的配置文件、WASM 文件和分词器文件。

import { CreateMLCEngine } from "@mlc-ai/web-llm";

const appConfig = {
  model_list: [
    {
      model: "https://huggingface.co/mlc-ai/Llama-3.2-1B-Instruct-q4f16_1-MLC",
      model_id: "Llama-3.2-1B-Instruct-q4f16_1-MLC",
      model_lib:
        "https://raw.githubusercontent.com/user/model-libs/main/model.wasm",
      integrity: {
        config: "sha256-<base64-hash-of-mlc-chat-config.json>",
        model_lib: "sha256-<base64-hash-of-wasm-file>",
        tokenizer: {
          "tokenizer.json": "sha256-<base64-hash-of-tokenizer.json>",
        },
        onFailure: "error", // "error"(默认)会抛出 IntegrityError,"warn" 则会记录警告并继续执行
      },
    },
  ],
};

const engine = await CreateMLCEngine("Llama-3.2-1B-Instruct-q4f16_1-MLC", {
  appConfig,
});

你可以使用以下命令为模型文件生成 SRI 哈希值:

# SHA-256
openssl dgst -sha256 -binary <file> | openssl base64 -A | sed 's/^/sha256-/'
# SHA-384
openssl dgst -sha384 -binary <file> | openssl base64 -A | sed 's/^/sha384-/'
# SHA-512
openssl dgst -sha512 -binary <file> | openssl base64 -A | sed 's/^/sha512-/'

openssl 命令需要类 Unix 环境(macOS/Linux)。在 Windows 上,可以通过 Git BashWSL 来运行 openssl

如果哈希值不匹配,将会抛出 IntegrityError(或在 onFailure: "warn" 时记录警告)。integrity 中的所有字段都是可选的——只有指定的文件才会被验证。如果完全省略 integrity 字段,WebLLM 将按原有方式运行(不进行任何验证)。

完整的演示示例请参阅 integrity-verification 示例

自定义模型

WebLLM 是 MLC LLM 的配套项目,支持 MLC 格式的自定义模型。它复用 MLC LLM 的模型工件,并沿用了其工作流程。要使用 WebLLM 编译和运行您自己的模型,请参阅 MLC LLM 文档,了解如何将新的模型权重和库部署到 WebLLM 中。

以下我们简要介绍其高层次的设计思路。WebLLM 包中有两个关键元素,用于支持新模型及其权重变体:

  • model:包含指向模型工件(如权重和元数据)的 URL。
  • model_lib:指向 WebAssembly 库(即 .wasm 文件)的 URL,该库包含用于加速模型计算的可执行代码。

这两个元素均可在 WebLLM 中进行自定义配置。

import { CreateMLCEngine } from "@mlc-ai/web-llm";

async function main() {
  const appConfig = {
    "model_list": [
      {
        "model": "/url/to/my/llama",
        "model_id": "MyLlama-3b-v1-q4f32_0",
        "model_lib": "/url/to/myllama3b.wasm",
      }
    ],
  };
  // 覆盖默认设置
  const chatOpts = {
    "repetition_penalty": 1.01
  };

  // 加载预构建模型,并应用聊天选项覆盖及应用配置
  // 在后台,它会从 myLlamaUrl 加载模型并缓存在浏览器缓存中
  // 同时,聊天界面也会从 "/url/to/myllama3b.wasm" 加载模型库,
  // 假设该库与 myLlamaUrl 中的模型兼容。
  const engine = await CreateMLCEngine(
    "MyLlama-3b-v1-q4f32_0",
    { appConfig }, // 引擎配置
    chatOpts,
  );
}

在许多情况下,我们只需提供不同的模型权重变体,而不一定需要引入全新的模型(例如,“NeuralHermes-Mistral”可以复用“Mistral”的模型库)。有关不同模型变体如何共享同一模型库的示例,请参阅 webllm.prebuiltAppConfig

从源码构建 WebLLM 包

注意:除非您希望修改 WebLLM 包,否则无需从源码构建。若要使用 npm 包,只需按照快速入门或任何示例中的说明操作即可。

若要从源码构建,只需执行以下命令:

npm install
npm run build

然后,要在示例中测试您的代码更改效果,在 examples/get-started/package.json 中将 "@mlc-ai/web-llm": "^0.2.82" 更改为 "@mlc-ai/web-llm": ../.."

接着运行:

cd examples/get-started
npm install
npm start

请注意,有时需要在 file:../..../.. 之间切换,以使 npm 识别到新更改。最坏的情况下,您可以执行以下操作:

cd examples/get-started
rm -rf node_modules dist package-lock.json .parcel-cache
npm install
npm start

如需从源码构建 TVMjs

WebLLM 的运行时环境很大程度上依赖于 TVMjs:https://github.com/apache/tvm/tree/main/web。虽然它也可以作为 npm 包使用:https://www.npmjs.com/package/@mlc-ai/web-runtime,但如有需要,您仍可按照以下步骤从源码构建。

  1. 安装 emscripten。它是一个基于 LLVM 的编译器,可将 C/C++ 源代码编译为 WebAssembly。

    • 按照安装说明安装最新版本的 emsdk。
    • 执行 source path/to/emsdk_env.sh 来加载 emsdk_env.sh,以便 emcc 可通过 PATH 访问,并确保 emcc 命令正常运行。

    我们可以通过尝试运行 emcc 终端命令来验证安装是否成功。

    注意:我们最近发现,使用最新版本的 emcc 可能在运行时遇到问题。目前,作为临时解决方案,建议使用 ./emsdk install 3.1.56 而不是 ./emsdk install latest。错误信息可能如下所示:

    初始化错误,LinkError:WebAssembly.instantiate(): 导入 #6 模块="wasi_snapshot_preview1"
    函数="proc_exit":函数导入需要一个可调用对象
    
  2. ./package.json 中,将 "@mlc-ai/web-runtime": "0.18.0-dev2", 更改为 "@mlc-ai/web-runtime": "file:./tvm_home/web",

  3. 设置必要的环境

    准备所有用于 Web 构建的依赖项:

    ./scripts/prep_deps.sh
    

    在此步骤中,如果环境中未定义 $TVM_SOURCE_DIR,我们将执行以下命令来构建 tvmjs 依赖项:

    git clone https://github.com/mlc-ai/relax 3rdparty/tvm-unity --recursive
    

    这将克隆 mlc-ai/relax 的当前 HEAD 版本。然而,这并不总是正确的分支或提交。要从源码构建特定的 npm 版本,请参考版本更新的 PR,其中会说明当前 WebLLM 版本依赖于哪个分支(即 mlc-ai/relaxapache/tvm)以及具体哪个提交。例如,根据其版本更新 PR https://github.com/mlc-ai/web-llm/pull/521,版本 0.2.52 是基于 apache/tvm 中的提交 https://github.com/apache/tvm/commit/e6476847753c80e054719ac47bc2091c888418b6 构建的,而非 mlc-ai/relax 的 HEAD。

    此外,--recursive 参数是必要且重要的。否则,您可能会遇到类似 fatal error: 'dlpack/dlpack.h' file not found 的错误。

  4. 构建 WebLLM 包

    npm run build
    
  5. 验证部分子包

    您可以进入 examples 中的子文件夹,验证其中的部分子包。我们使用 Parcelv2 进行打包。尽管 Parcel 有时难以追踪父目录的变化,但当您对 WebLLM 包进行更改时,可以尝试编辑子文件夹的 package.json 并保存,这样会触发 Parcel 重新构建。

链接

致谢

本项目由 CMU Catalyst、UW SAMPL、上海交通大学、OctoML 以及 MLC 社区的成员共同发起。我们期待继续开发并支持开源机器学习社区。

本项目得以实现,离不开我们所依托的开源生态系统。我们衷心感谢 Apache TVM 社区以及 TVM Unity 团队的开发者们。正是开源机器学习社区的成员们公开了这些模型,而 PyTorch 和 Hugging Face 社区则让这些模型更加易于获取。我们特别感谢 Vicuna、SentencePiece、LLaMA 和 Alpaca 团队的支持。此外,我们也感谢 WebAssembly、Emscripten 和 WebGPU 社区,以及 Dawn 和 WebGPU 的开发者们。

引用

如果您觉得本项目有用,请引用以下文献:

@misc{ruan2024webllmhighperformanceinbrowserllm,
      title={WebLLM:一款高性能的浏览器内LLM推理引擎},
      author={Charlie F. Ruan、Qin Yucheng、Zhou Xun、Lai Ruihang、Jin Hongyi、Dong Yixin、Hou Bohan、Yu Meng-Shiun、Zhai Yiyan、Agarwal Sudeep、Cao Hangrui、Feng Siyuan、Chen Tianqi},
      year={2024},
      eprint={2412.15803},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2412.15803},
}

贡献者

contributors

⬆ 返回顶部 ⬆

版本历史

v0.2.822026/03/13
v0.2.812026/02/18
v0.2.02023/05/26

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|今天
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|昨天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

141.5k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.9k|★★☆☆☆|今天
开发框架图像Agent

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|今天
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|今天
开发框架图像Agent