Huggingface.js 文档

@huggingface/gguf

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始

@huggingface/gguf

一个可以在远程托管文件上工作的 GGUF 解析器。

规范

规范:https://github.com/ggerganov/ggml/blob/master/docs/gguf.md

参考实现 (Python):https://github.com/ggerganov/llama.cpp/blob/master/gguf-py/gguf/gguf_reader.py

安装

npm install @huggingface/gguf

使用

基本用法

import { GGMLQuantizationType, gguf } from "@huggingface/gguf";

// remote GGUF file from https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
const URL_LLAMA = "https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/191239b/llama-2-7b-chat.Q2_K.gguf";

const { metadata, tensorInfos } = await gguf(URL_LLAMA);

console.log(metadata);
// {
//     version: 2,
//     tensor_count: 291n,
//     kv_count: 19n,
//     "general.architecture": "llama",
//     "general.file_type": 10,
//     "general.name": "LLaMA v2",
//     ...
// }

console.log(tensorInfos);
// [
//     {
//         name: "token_embd.weight",
//         shape: [4096n, 32000n],
//         dtype: GGMLQuantizationType.Q2_K,
//     },

//     ... ,

//     {
//         name: "output_norm.weight",
//         shape: [4096n],
//         dtype: GGMLQuantizationType.F32,
//     }
// ]

读取本地文件

// Reading a local file. (Not supported on browser)
const { metadata, tensorInfos } = await gguf(
  './my_model.gguf',
  { allowLocalFile: true },
);

严格类型

默认情况下,metadata 中的已知字段是类型化的。这包括在 llama.cppwhisper.cppggml 中找到的各种字段。

const { metadata, tensorInfos } = await gguf(URL_MODEL);

// Type check for model architecture at runtime
if (metadata["general.architecture"] === "llama") {

  // "llama.attention.head_count" is a valid key for llama architecture, this is typed as a number
  console.log(model["llama.attention.head_count"]);

  // "mamba.ssm.conv_kernel" is an invalid key, because it requires model architecture to be mamba
  console.log(model["mamba.ssm.conv_kernel"]); // error
}

禁用严格类型

由于 GGUF 格式可以用来存储张量,因此我们可以将其用于其他用途。例如,存储 控制向量lora 权重 等。

如果您想使用自己的 GGUF 元数据结构,可以通过将解析输出强制转换为 GGUFParseOutput<{ strict: false }> 来禁用严格类型。

const { metadata, tensorInfos }: GGUFParseOutput<{ strict: false }> = await gguf(URL_LLAMA);

Hugging Face Hub

Hub 支持所有文件格式,并内置了针对 GGUF 格式的功能。

更多信息请访问:http://hf.co/docs/hub/gguf.

致谢与启发

🔥❤️

< > 在 GitHub 上更新