《AI大模型技术应知应会100篇》No1. 大模型文件格式一篇读懂读全

发布于:2025-03-05 ⋅ 阅读:(14) ⋅ 点赞:(0)

大模型文件格式与应用概述

大模型作为人工智能领域的核心技术,其文件格式和存储方式直接影响模型的训练、推理、部署和跨平台适配能力。根据现有研究和实践,大模型文件主要分为两类:参数文件代码文件,前者存储神经网络的权重和偏差,后者包含运行模型的操作逻辑 。本文将详细介绍AI大模型的文件格式、对应的深度学习AI框架、主流应用场景、国内外主要厂商采用的文件格式以及技术趋势等,并提供了一个具体的大模型文件格式及参数说明,并提供了加载每一种大模型的代码示例,是比较全面的一篇介绍,建议收藏!

在这里插入图片描述

以下从文件格式、主流应用场景及技术趋势三个方面进行总结。

1. 文件格式

大模型文件格式的选择通常取决于框架生态和具体需求:

  • PyTorch (.pt/.pth): 以灵活性著称,广泛应用于研究和微调场景,例如通义千问(Qwen)和混元(HunYuan)等模型均采用此格式 。
  • SavedModel: TensorFlow 的标准导出格式,适合云服务和跨平台部署,如百度文心一言和Google PaLM 。
  • ONNX: 开放神经网络交换格式,支持跨框架互操作性,被阿里云、腾讯和商汤科技等公司用于高性能推理和边缘计算 。
  • 量化格式 (PTQ): 针对低资源设备优化,通过减少模型大小和推理时间提升效率,科大讯飞和百川智能等公司在边缘计算中广泛应用 。
  • HDF5 (.h5): 常见于Keras框架,适用于传统深度学习任务,便于快速原型设计 。
  • 私有化格式: 国内企业(如科大讯飞和商汤科技)针对企业级用户开发定制化格式,满足私有化部署需求 。
2. 主流应用场景

不同格式服务于不同的实际需求:

  • 研究与实验: PyTorch 和 HDF5 格式因其灵活性和易用性,成为学术研究和模型微调的首选。
  • 云服务与跨平台部署: SavedModel 和 ONNX 格式支持多平台兼容性,适合在云端或分布式环境中运行。
  • 移动端与边缘计算: TFLite 和量化格式(如 PTQ)显著降低模型复杂度,适应低功耗硬件和实时推理需求。
  • 企业私有化部署: 定制化格式和量化技术满足企业对安全性和性能的双重需求 。
3. 技术趋势

随着大模型的应用范围不断扩大,文件格式和技术也在持续演进:

  • 跨框架兼容性: ONNX 和类似技术推动了模型在不同框架间的无缝迁移,提升了开发效率 。
  • 高效推理: 量化技术和硬件加速(如 XLA 和 TensorRT)成为主流,显著提升了模型在边缘设备上的性能 。
  • RAG 检索增强生成: 结合外部知识库的检索增强生成技术(RAG)正在改变大模型的应用模式,使其更适配垂直领域任务 。

综上所述,大模型文件格式的选择需综合考虑框架生态、部署环境和性能需求。未来,随着技术的进一步发展,跨平台兼容性和高效推理将成为大模型文件格式优化的核心方向

4. 文件格式及参数具体案例

在大模型仓库(如Hugging Face)中,例如:智谱清源的GLM-4-9b,通常会发现以下几类文件:

  • 模型权重文件:存储训练好的模型参数,是模型推理和微调的基础,格式通常有
    .pt、.ckpt、.safetensors
  • 配置文件:确保模型架构的一致性,使得权重文件能够正确加载,格式通常有
    config.json、generation_config.json
  • 词汇表文件:保证输入输出的一致性,格式通常有
    tokenizer.json、tokenizer_config.json
5. 示例 GLM-4模型文件列表

在这里插入图片描述

6. 模型权重文件

模型权重文件是存储训练好的模型参数,是模型推理和微调的基础 ,常见的有.pt、.ckpt、.safetensors不同的框架(如TensorFlow、PyTorch)使用不同的模型文件格式 例如:

  • safetensors:适配多种框架,支持transformers库的模型加载

  • PyTorch:选择下载.pt或.bin格式的模型文件。

  • TensorFlow:选择下载.ckpt或.h5格式的模型文件。

    safetensors是什么

safetensors是由Hugging Face提出的一种新型的模型权重文件格式,有以下特点:

  • 安全性:.safetensors采用了加密和校验机制,防止模型文件被篡改或注入恶意代码
  • 性能:优化了数据加载和解析速度
  • 跨框架支持:有多种深度学习框架的兼容性,便于在不同环境中使用
    .safetensors中,大模型可被分为多个部分,格式类似modelname-0001.safetensors、modelname-0002.safetensors、model.safetensors.index.json是索引文件,记录了模型的各个部分的位置和大小信息
7.配置文件 config.json、generation_config.json
  • config.json

config.json包含模型的配置信息(如模型架构、参数设置等),可能包含隐藏层的数量、每层的神经元数、注意力头的数量等
config.json的基本结构如下:

{
  "architectures": [
    "LlamaForCausalLM"
  ],
  "hidden_act": "silu",
  "hidden_size": 8192,
  "num_hidden_layers": 80,
  "max_position_embeddings": 8192,
  "model_type": "llama",
  "num_attention_heads": 64,
  "vocab_size": 128256,
  ......
}

例如architectures字段指定了模型的架构,hidden_act字段指定了隐藏层的激活函数,hidden_size字段指定了隐藏层的神经元数,num_attention_heads字段指定了注意力头的数量,max_position_embeddings字段指定了模型能处理的最大输入长度等。

  • generation_config.json

generation_config.json是用于生成文本的配置文件,包含了生成文本时的参数设置,如max_length、temperature、top_k等
generation_config.json的基本结构如下:

{
  "bos_token_id": 128000,
  "eos_token_id": 128001,
  "do_sample": true,
  "temperature": 0.6,
  "max_length": 4096,
  "top_p": 0.9,
  "transformers_version": "4.40.0.dev0"
}

例如bos_token_id字段指定了开始标记的ID,eos_token_id字段指定了结束标记的ID,do_sample字段指定了是否使用采样,temperature字段用于控制生成文本的随机性,max_length字段指定了生成文本的最大长度,top_p字段指定了采样的概率等
config.json 和 generation_config.json 都可能包含 “bos_token_id”(Beginning of Sequence Token ID)和 “eos_token_id”(End of Sequence Token ID)。在config.json中,这两个字段用于模型的加载和训练,而在generation_config.json中,这两个字段用于生成文本时的参数设置
config.json 提供模型的基本信息,而 generation_config.json 则细化为生成任务的具体需求

8.词汇表文件

词汇表文件包含了模型使用的词汇表或标记器信息,是自然语言处理模型理解和生成文本的基础。

tokenizer.json、tokenizer_config.json

  • tokenizer.json

tokenizer.json包含了模型使用的词汇表信息,如词汇表的大小、特殊标记的ID等
tokenizer.json的基本结构如下:

{
  "version": "1.0",
  "truncation": {
    "max_length": 128,
    "strategy": "longest_first"
  },
  "padding": {
    "side": "right",
    "pad_id": 0,
    "pad_token": "[PAD]"
  },
  "added_tokens": [
    {
      "id": 128010,
      "content": "[CUSTOM]"
    }
  ],
  "normalizer": {
    "type": "NFD",
    "lowercase": true,
    "strip_accents": true
  },
  "pre_tokenizer": {
    "type": "ByteLevel",
    "add_prefix_space": true
  },
  "post_processor": {
    "type": "AddSpecialTokens",
    "special_tokens": {
      "cls_token": "[CLS]",
      "sep_token": "[SEP]"
    }
  },
  "decoder": {
    "type": "ByteLevel"
  },
  "model": {
    "type": "BPE",
    ...
  }
}

其中truncation是定义截断策略,用于限制输入序列的最大长度,padding用于统一输入序列的长度,added_tokens列出分词器额外添加到词汇表中的特殊标记或自定义标记
normalizer用于定义文本标准化的步骤和规则,用于在分词前对输入文本进行预处理,pre_tokenizer定义分词器如何将输入文本分割为初步的tokens,post_processor定义分词后处理的步骤
decoder定义如何将tokens ID 序列解码回原始文本,model定义了分词器的模型信息,如词汇表、合并规则(对于 BPE)等

  • tokenizer_config.json

tokenizer_config.json是用于生成文本的配置文件,包含了生成文本时的参数设置,如max_length、temperature、top_k等。

tokenizer_config.json的基本结构如下:

{
  "added_tokens_decoder": [],
  "bos_token": "begin_of_text |>",
  "clean_up_tokenization_spaces": true,
  "eos_token": "<|end_of_text|>",
  "model_input_names": ["input_ids", "attention_mask"],
  "model_max_length": 1000000,
  "tokenizer_class": "PreTrainedTokenizerFast"
}

其中added_tokens_decoder定义分词器在解码(将 token ID 转换回文本)过程中需要额外处理的特殊标记或自定义标记
bos_token、eos_token定义开始、结束标记,clean_up_tokenization_spaces定义了是否清除分词后的多余空格等
tokenizer.json和tokenizer_config.json的区别:tokenizer.json侧重于分词器的训练和加载,而tokenizer_config.json更侧重于生成文本时的参数设置
现在大多数模型都已经删除 vocab.txt,那是因为现代分词器采用了更为丰富和灵活的文件格式,如 tokenizer.json,以支持更复杂的分词策略和特殊标记处理。


一、主流8种大模型文件格式

1. TensorFlow (SavedModel, weights, tf.Variables)

特点
  • SavedModel: TensorFlow 的官方推荐格式,支持跨平台部署(如云、移动端、嵌入式设备)。
  • weights: 仅保存权重,适合需要重新加载模型结构的场景。
  • tf.Variables: 存储非可训练变量(如优化器状态),适用于复杂的训练恢复场景。
主流大模型公司的采用情况
  • Google:
    • PaLM (Pathways Language Model): 使用 SavedModel 格式进行导出和部署,适合在 Google Cloud 和 TensorFlow Serving 中使用。
    • BERT: 官方预训练模型以 SavedModel 或 HDF5 格式发布。
  • DeepMind:
    • AlphaFold: 使用 SavedModel 格式发布蛋白质结构预测模型,便于在 TensorFlow 生态中部署。
适用场景
  • 云服务、服务器端推理、跨平台部署。

2. PyTorch (pt, pth)

特点
  • pt/pth: 包含模型权重或完整模型的状态字典(state_dict),灵活性高,适合研究和快速迭代。
主流大模型公司的采用情况
  • Meta (Facebook):
    • Llama 系列: Llama、Llama2 等模型以 .pt.pth 格式发布,用户可以加载权重并自定义模型结构。
    • PyTorch 生态中的其他模型: 如 Detectron2(目标检测框架)也广泛使用 .pth 格式。
  • Hugging Face:
    • Transformers 库: 大量预训练模型(如 BERT、GPT、T5)以 .bin.pth 格式存储,通过 PyTorch 加载。
适用场景
  • 研究、实验、灵活的模型微调和扩展。

3. ONNX

特点
  • ONNX: 开放神经网络交换格式,支持跨框架互操作性,常用于模型优化和部署。
主流大模型公司的采用情况
  • Microsoft:
    • ONNX Runtime: Microsoft 推广的高性能推理引擎,支持多种硬件加速(如 CPU、GPU、FPGA)。
    • Phi 系列模型: Phi-1、Phi-2 等小型语言模型支持导出为 ONNX 格式,便于跨平台部署。
  • NVIDIA:
    • TensorRT: NVIDIA 的推理优化工具支持从 ONNX 导入模型,并进一步优化性能。
  • Hugging Face:
    • Optimum: Hugging Face 提供的优化工具支持将 Transformers 模型导出为 ONNX 格式。
适用场景
  • 跨框架部署、边缘计算、高性能推理。

4. PTQ (Post-Training Quantization)

特点
  • PTQ: 量化后的模型,减少模型大小和推理时间,适合轻量化应用。
主流大模型公司的采用情况
  • Google:
    • TensorFlow Lite: 支持对 MobileNet、BERT 等模型进行量化,生成 TFLite 格式的量化模型。
    • EdgeTPU: 专为 Google EdgeTPU 设计的量化模型。
  • Meta:
    • Llama.cpp: 社区开发的 Llama 推理工具支持对 Llama 模型进行量化(如 INT8、INT4),以适应低资源设备。
适用场景
  • 移动端、嵌入式设备、低功耗硬件。

5. TFLite

特点
  • TFLite: TensorFlow Lite 格式,专为移动设备和嵌入式设备设计。
主流大模型公司的采用情况
  • Google:
    • MobileBERT: 针对移动端优化的 BERT 变体,以 TFLite 格式发布。
    • MediaPipe: Google 的多媒体处理框架支持 TFLite 模型,用于实时视频分析。
  • Samsung:
    • OneUI: Samsung 的手机操作系统集成了多个 TFLite 模型,用于相机优化、语音助手等。
适用场景
  • 移动端、嵌入式设备、实时推理。

6. Flair (Flair)

特点
  • Flair: 专注于 NLP 任务的框架,支持量化模型。
主流大模型公司的采用情况
  • Zalando Research:
    • Flair 框架: Flair 是 Zalando 开发的 NLP 工具包,主要用于命名实体识别(NER)、文本分类等任务。
  • 社区贡献:
    • Custom Models: 社区开发者基于 Flair 构建了多种定制化 NLP 模型。
适用场景
  • NLP 任务、学术研究、小规模部署。

7. Keras (HDF5, .h5)

特点
  • HDF5 (.h5): 常见的模型存储格式,包含模型结构和权重。
主流大模型公司的采用情况
  • Google:
    • Keras Applications: Keras 官方提供的预训练模型(如 ResNet、VGG、Inception)以 HDF5 格式发布。
  • Hugging Face:
    • Keras Models: Hugging Face 的部分模型支持以 HDF5 格式导出,便于与 TensorFlow/Keras 用户集成。
适用场景
  • 快速原型设计、传统深度学习任务。

8. XLAModelFile, EZZTModelFile

特点
  • XLA/EZZT: 高效运行模型的专用格式,适用于特定硬件加速。
主流大模型公司的采用情况
  • Google:
    • TPU: XLA 是 Google TPU 的核心编译技术,用于加速大规模模型训练和推理。
  • NVIDIA:
    • CUDA Graphs: 类似于 XLA 的优化技术,用于 GPU 上的高效推理。
适用场景
  • 高性能计算、大规模分布式训练、硬件加速。

综合一览表

格式 主流公司/产品 典型模型 适用场景
SavedModel Google (PaLM, AlphaFold) PaLM、BERT、AlphaFold 云服务、跨平台部署
pt/pth Meta (Llama), Hugging Face Llama、BERT、GPT 研究、灵活微调
ONNX Microsoft, NVIDIA, Hugging Face Phi、BERT、Transformer 跨框架部署、高性能推理
PTQ Google, Meta MobileBERT、Llama.cpp 移动端、嵌入式设备
TFLite Google, Samsung MobileBERT、MediaPipe 移动端、实时推理
Flair Zalando Research NER、Text Classification NLP 任务、学术研究
HDF5 (.h5) Google (Keras), Hugging Face ResNet、VGG、Inception 快速原型设计、传统任务
XLA/EZZT Google (TPU), NVIDIA 大规模分布式训练、TPU 优化模型 高性能计算、硬件加速

通过以上表格可以看出,不同的格式服务于不同的需求和生态系统。例如,Google 的模型多采用 SavedModel 和 TFLite,而 Meta 的模型则更倾向于 PyTorch 的 .pt 格式。选择合适的格式能够显著提升模型的性能和适配性。


二、如何加载大模型文件

1. TensorFlow (SavedModel, weights, tf.Variables)

格式说明
  • SavedModel: TensorFlow 的标准导出格式,包含完整的模型结构(计算图)和权重,适合跨平台部署。
  • weights: 仅保存模型的可训练变量(权重),不包含模型结构。
  • tf.Variables: 存储非可训练变量(如优化器状态等)。
加载方法
  • SavedModel:

    import tensorflow as tf
    
    # 加载 SavedModel 格式的模型
    model = tf.saved_model.load("path_to_saved_model")
    # 调用模型进行推理
    result = model.signatures["serving_default"](tf.constant([[1.0, 2.0]]))
    print(result)
    
  • weights:

    import tensorflow as tf
    
    # 定义模型结构
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(10, input_shape=(5,))
    ])
    
    # 加载权重
    model.load_weights("path_to_weights/weights")
    
  • tf.Variables:

    import tensorflow as tf
    
    # 直接读取二进制文件中的变量
    var_data = tf.io.read_file("path_to_variable_file")
    print(var_data)
    

2. PyTorch (pt, pth)

格式说明
  • pt/pth: 包含模型权重或整个模型的状态字典(state_dict)。pth 文件可能包含额外信息(如优化器状态)。
加载方法
  • 加载权重:

    import torch
    
    # 定义模型结构
    class SimpleModel(torch.nn.Module):
        def __init__(self):
            super(SimpleModel, self).__init__()
            self.fc = torch.nn.Linear(5, 10)
    
        def forward(self, x):
            return self.fc(x)
    
    model = SimpleModel()
    
    # 加载权重
    model.load_state_dict(torch.load("path_to_model.pth"))
    model.eval()  # 设置为推理模式
    
  • 加载完整模型:

    import torch
    
    # 直接加载整个模型
    model = torch.load("path_to_full_model.pt")
    model.eval()
    

3. ONNX

格式说明
  • ONNX: 开放神经网络交换格式,支持跨框架使用。通常用于模型优化和部署。
加载方法
  • PyTorch 导出为 ONNX:

    import torch
    
    # 定义模型
    class SimpleModel(torch.nn.Module):
        def __init__(self):
            super(SimpleModel, self).__init__()
            self.fc = torch.nn.Linear(5, 10)
    
        def forward(self, x):
            return self.fc(x)
    
    model = SimpleModel()
    dummy_input = torch.randn(1, 5)
    
    # 导出为 ONNX 格式
    torch.onnx.export(model, dummy_input, "model.onnx", opset_version=11)
    
  • 加载 ONNX 模型:

    import onnxruntime as ort
    
    # 加载 ONNX 模型
    session = ort.InferenceSession("model.onnx")
    
    # 准备输入数据
    input_name = session.get_inputs()[0].name
    output_name = session.get_outputs()[0].name
    input_data = [[1.0, 2.0, 3.0, 4.0, 5.0]]
    
    # 推理
    result = session.run([output_name], {input_name: input_data})
    print(result)
    

4. PTQ (Post-Training Quantization)

格式说明
  • PTQ: 量化后的模型,减少模型大小和推理时间,适合轻量化应用。
加载方法
  • 使用 TensorFlow Lite 的量化工具:
    import tensorflow as tf
    
    # 加载量化模型
    interpreter = tf.lite.Interpreter(model_path="quantized_model.tflite")
    interpreter.allocate_tensors()
    
    # 获取输入输出张量
    input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()
    
    # 准备输入数据
    input_data = [[1.0, 2.0, 3.0, 4.0, 5.0]]
    interpreter.set_tensor(input_details[0]['index'], input_data)
    
    # 推理
    interpreter.invoke()
    output_data = interpreter.get_tensor(output_details[0]['index'])
    print(output_data)
    

5. TFLite

格式说明
  • TFLite: TensorFlow Lite 格式,专为移动设备和嵌入式设备设计。
加载方法
  • 转换为 TFLite:

    import tensorflow as tf
    
    # 定义模型
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(10, input_shape=(5,))
    ])
    model.compile(optimizer='adam', loss='mse')
    
    # 转换为 TFLite 格式
    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    tflite_model = converter.convert()
    
    with open("model.tflite", "wb") as f:
        f.write(tflite_model)
    
  • 加载 TFLite 模型:

    import tensorflow as tf
    
    # 加载 TFLite 模型
    interpreter = tf.lite.Interpreter(model_path="model.tflite")
    interpreter.allocate_tensors()
    
    # 获取输入输出张量
    input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()
    
    # 准备输入数据
    input_data = [[1.0, 2.0, 3.0, 4.0, 5.0]]
    interpreter.set_tensor(input_details[0]['index'], input_data)
    
    # 推理
    interpreter.invoke()
    output_data = interpreter.get_tensor(output_details[0]['index'])
    print(output_data)
    

6. Flair (Flair)

格式说明
  • Flair: 专注于 NLP 任务的框架,支持量化模型。
加载方法
  • 加载 Flair 模型:
    from flair.models import SequenceTagger
    
    # 加载预训练模型
    model = SequenceTagger.load("ner")
    
    # 推理
    sentence = "I love New York"
    model.predict(sentence)
    print(sentence.to_tagged_string())
    

7. Keras (HDF5, .h5)

格式说明
  • HDF5 (.h5): 常见的模型存储格式,包含模型结构和权重。
加载方法
  • 加载 HDF5 模型:
    from tensorflow.keras.models import load_model
    
    # 加载 HDF5 格式的模型
    model = load_model("model.h5")
    
    # 推理
    result = model.predict([[1.0, 2.0, 3.0, 4.0, 5.0]])
    print(result)
    

8. XLAModelFile, EZZTModelFile

格式说明
  • XLA/EZZT: 高效运行模型的专用格式,适用于特定硬件加速。
加载方法
  • 加载 XLA 模型:
    import tensorflow as tf
    
    # 启用 XLA 优化
    tf.config.optimizer.set_jit(True)
    
    # 加载模型并运行
    model = tf.keras.models.load_model("xla_model")
    result = model.predict([[1.0, 2.0, 3.0, 4.0, 5.0]])
    print(result)
    

9. 额外补充:DeepSeek 的大模型格式及加载方法

DeepSeek提供的大模型通常采用以下文件格式和加载方式:

一、文件格式
  1. Hugging Face格式
  • 核心文件:
    • pytorch_model.binmodel.safetensors(模型权重)
    • config.json(模型结构配置)
    • tokenizer.json/tokenizer_config.json(分词器配置)
  • 文件结构示例:
    model_folder/
    ├── config.json
    ├── pytorch_model.bin
    ├── tokenizer.json
    └── special_tokens_map.json
    
  1. 其他可能格式
  • TensorFlow:tf_model.h5 + 配置文件
  • ONNX:model.onnx(需专用运行时)
二、加载方式
  1. 使用Hugging Face Transformers库
from transformers import AutoModelForCausalLM, AutoTokenizer

model_path = "deepseek-ai/deepseek-llm-7b-base"  # 或本地路径
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    trust_remote_code=True,  # 可能需要此参数
    torch_dtype="auto"  # 自动选择精度
)
  1. 分片模型加载(适用于大模型)
    当看到pytorch_model-00001-of-00005.bin等分片文件时,Transformers会自动处理加载。

  2. 量化模型加载

model = AutoModelForCausalLM.from_pretrained(
    model_path,
    device_map="auto",
    load_in_4bit=True  # 4位量化加载
)
三、典型加载流程
  1. 安装依赖
pip install transformers accelerate torch
  1. 示例代码框架
import torch
from transformers import pipeline

# 自动检测设备(优先使用GPU)
device = "cuda" if torch.cuda.is_available() else "cpu"

# 创建文本生成管道
generator = pipeline(
    "text-generation",
    model="deepseek-ai/deepseek-llm-7b-base",
    device=device,
    torch_dtype=torch.bfloat16  # 节省显存
)

# 使用示例
output = generator("人工智能的未来发展", max_length=100)
print(output[0]['generated_text'])
四、注意事项
  1. 硬件要求

    • 7B模型:至少16GB GPU显存(FP16精度)
    • 通过load_in_8bit=True可降低显存需求
  2. 模型来源

    • 官方Hugging Face仓库:deepseek-ai/前缀
    • 本地加载需保持完整文件结构
  3. 定制需求

    # 自定义加载参数示例
    model = AutoModelForCausalLM.from_pretrained(
        model_path,
        device_map="balanced",  # 多GPU分配策略
        revision="v2.0"  # 指定版本
    )
    
五、补充说明

DeepSeek 提供的大模型文件格式主要包括以下几种,具体加载方式也因格式而异:


1. 文件格式
根据现有资料,DeepSeek 的大模型文件主要采用以下格式:

  • .pt 或 .bin 格式:
    • 这是 DeepSeek 模型的常见权重文件格式,通常以二进制形式存储模型参数 [[1]]。
    • .pt 是 PyTorch 的标准格式,适合研究和微调场景。
    • .bin 则可能是经过优化的二进制格式,便于快速加载和推理。
  • GGUF 格式:
    • GGUF 是一种新兴的二进制格式,专为高效推理设计。相较于传统的文本格式,GGUF 文件更紧凑,读取和解析速度更快 [[3]]。
    • GGUF 格式的模型通常只有一个文件,简化了部署流程。
  • 其他格式(如配置文件):
    • 在某些情况下,模型文件可能附带额外的配置文件(如 JSON、YAML),用于定义模型结构或运行参数 [[5]]。

2. 加载方式
加载 DeepSeek 模型的方式取决于文件格式和部署工具,以下是常见的加载方法:

(1) 使用 PyTorch 加载 .pt.bin 文件
如果模型文件是 .pt.bin 格式,可以通过 PyTorch 直接加载:

import torch

# 加载模型权重
model_path = "path_to_model.pt"
model_weights = torch.load(model_path)

# 定义模型结构并加载权重
class CustomModel(torch.nn.Module):
    def __init__(self):
        super(CustomModel, self).__init__()
        # 定义模型层

model = CustomModel()
model.load_state_dict(model_weights)
model.eval()  # 设置为推理模式

这种方式适合需要灵活调整模型结构的研究场景 [[1]]。

(2) 使用 Ollama 工具加载
Ollama 是一个开源的本地大模型部署工具,支持多种格式的模型加载。对于 DeepSeek 模型,可以使用以下命令:

ollama pull deepseek/deepseek-llm-7b

Ollama 会自动处理模型文件的下载和加载,适合快速部署和测试 [[8]]。

(3) 使用 llama.cpp 加载 GGUF 格式
如果模型文件是 GGUF 格式,可以通过 llama.cpp 工具加载:

./main -m path_to_model.gguf -p "Your prompt here"

llama.cpp 是一个高效的推理框架,支持量化和低资源设备上的运行 [[5]]。

(4) 自定义加载脚本
在某些情况下,DeepSeek 模型可能需要结合配置文件加载。例如:

import json

# 加载配置文件
with open("config.json", "r") as f:
    config = json.load(f)

# 根据配置初始化模型
model = initialize_model(config)

# 加载权重
model.load_weights("path_to_weights.bin")

这种方式适合企业级私有化部署,尤其是需要定制化功能的场景 [[9]]。


** 归纳说明**
DeepSeek 提供的大模型文件格式主要包括 .pt.bin 和 GGUF 等,分别适用于不同的应用场景:

  • 研究与微调: 使用 .pt.bin 格式,通过 PyTorch 加载。
  • 高效推理: 使用 GGUF 格式,通过 llama.cpp 加载。
  • 快速部署: 使用 Ollama 工具,简化模型加载和运行流程。

选择合适的格式和加载方式能够显著提升模型的性能和适配性

最新实践建议直接参考DeepSeek官方文档(通常通过trust_remote_code=True启用定制逻辑),不同版本模型可能会有特殊加载要求。


小结

以上对常见模型格式的说明和加载方法进行了详细扩展,并提供了具体的 Python 代码示例。选择合适的格式取决于应用场景(如移动端、服务器端、NLP 任务等)以及性能需求(如推理速度、模型大小)。

三、国内主流厂商大模型文件格式

国内主流大模型公司及其产品在模型文件格式的选择上通常会结合其技术生态、应用场景以及部署需求。以下是对这些公司及其产品所采用的格式的简单介绍:


1. 百度 - 文心一言(ERNIE系列)

  • 主要格式:

    • SavedModel: 百度基于 TensorFlow 生态构建的模型通常支持 SavedModel 格式,便于在云服务和跨平台场景中部署 。
    • ONNX: 部分模型支持导出为 ONNX 格式,以满足跨框架的需求。
    • 私有化部署格式: 百度提供针对企业用户的私有化部署解决方案,可能使用定制化的二进制格式或 HDF5。
  • 适用场景:

    • 云服务、跨平台推理、企业私有化部署。

2. 阿里云 - 通义千问(Qwen)

  • 主要格式:

    • PyTorch (.pt/.pth): 通义千问基于 PyTorch 开发,官方发布的预训练模型通常以 .pt.pth 格式提供,方便用户加载权重并进行微调 。
    • ONNX: 支持将模型导出为 ONNX 格式,用于高性能推理和跨框架兼容性。
    • TFLite: 针对移动端优化的版本可能支持 TFLite 格式。
  • 适用场景:

    • 研究与实验、灵活微调、移动端部署。

3. 腾讯 - 混元(HunYuan)

  • 主要格式:

    • PyTorch (.pt/.pth): 混元模型基于 PyTorch 构建,支持以 .pt.pth 格式发布,便于研究和开发 。
    • ONNX: 部分模型支持导出为 ONNX 格式,用于跨框架推理。
    • 自定义格式: 针对企业级应用,腾讯可能提供专有的高效运行格式(如 XLA 类似的技术)。
  • 适用场景:

    • 大规模分布式训练、高性能推理、企业级应用。

4. 科大讯飞 - 星火大模型

  • 主要格式:

    • 私有化部署格式: 科大讯飞联合华为推出了“星火一体机”,支持私有化部署,可能采用定制化的二进制格式或 HDF5 。
    • ONNX: 部分模型支持导出为 ONNX 格式,便于跨平台使用。
    • 量化格式 (PTQ): 针对边缘设备优化的版本可能采用量化后的模型格式。
  • 适用场景:

    • 企业私有化部署、边缘计算、实时推理。

5. 字节跳动 - 豆包(DouBao)

  • 主要格式:

    • PyTorch (.pt/.pth): 豆包模型基于 PyTorch 开发,支持以 .pt.pth 格式发布,便于研究和微调 。
    • ONNX: 部分模型支持导出为 ONNX 格式,用于跨框架推理。
    • TFLite: 针对移动端优化的版本可能支持 TFLite 格式。
  • 适用场景:

    • 移动端应用、跨平台推理、实时交互。

6. 商汤科技 - 日日新大模型

  • 主要格式:

    • ONNX: 商汤科技的模型广泛支持 ONNX 格式,便于在多种硬件平台上部署 。
    • 私有化部署格式: 商汤为企业用户提供私有化部署解决方案,可能采用定制化的二进制格式。
    • 量化格式 (PTQ): 针对边缘设备优化的版本可能采用量化后的模型格式。
  • 适用场景:

    • 边缘计算、企业私有化部署、高性能推理。

7. 智谱AI - GLM 系列

  • 主要格式:

    • PyTorch (.pt/.pth): GLM 系列模型基于 PyTorch 开发,支持以 .pt.pth 格式发布,便于研究和微调 。
    • ONNX: 部分模型支持导出为 ONNX 格式,用于跨框架推理。
    • 私有化部署格式: 智谱AI 提供针对企业用户的私有化部署解决方案,可能采用定制化的二进制格式。
  • 适用场景:

    • 研究与实验、企业私有化部署、跨平台推理。

8. 百川智能 - 百川大模型

  • 主要格式:

    • PyTorch (.pt/.pth): 百川大模型基于 PyTorch 开发,支持以 .pt.pth 格式发布,便于研究和微调 。
    • 量化格式 (PTQ): 针对低资源设备优化的版本可能采用量化后的模型格式。
    • ONNX: 部分模型支持导出为 ONNX 格式,用于跨框架推理。
  • 适用场景:

    • 移动端应用、低资源设备、跨平台推理。

汇总表

公司/产品 主要格式 典型场景
百度 - 文心一言 SavedModel, ONNX, 私有化格式 云服务、跨平台推理、私有化部署
阿里云 - 通义千问 PyTorch (.pt/.pth), ONNX, TFLite 研究与实验、移动端部署、跨平台推理
腾讯 - 混元 PyTorch (.pt/.pth), ONNX, 自定义格式 分布式训练、高性能推理、企业级应用
科大讯飞 - 星火 私有化格式, ONNX, PTQ 私有化部署、边缘计算、实时推理
字节跳动 - 豆包 PyTorch (.pt/.pth), ONNX, TFLite 移动端应用、跨平台推理、实时交互
商汤科技 - 日日新 ONNX, 私有化格式, PTQ 边缘计算、私有化部署、高性能推理
智谱AI - GLM PyTorch (.pt/.pth), ONNX, 私有化格式 研究与实验、私有化部署、跨平台推理
百川智能 - 百川 PyTorch (.pt/.pth), ONNX, PTQ 移动端应用、低资源设备、跨平台推理

通过以上表格可以看出,中国国内的大模型公司在格式选择上普遍倾向于 PyTorch 和 ONNX,以满足灵活性和跨平台需求。同时,针对企业私有化部署和边缘计算等特定场景,也会采用定制化格式或量化技术 .


网站公告

今日签到

点亮在社区的每一天
去签到