大模型格式介绍

239 阅读2分钟

大模型(如LLM、视觉模型等)在训练、部署和推理过程中会使用多种文件格式来存储模型结构、权重和配置信息。以下是常见的格式及其详细解释:

1. PyTorch 原生格式(.pt / .pth

  • 用途:PyTorch框架的默认保存格式。

  • 特点

    • 可保存完整的模型(结构+权重)或仅权重。
    • 依赖PyTorch环境加载,跨平台兼容性较差。
  • 示例代码

    python

    torch.save(model.state_dict(), 'model.pt')  # 仅权重
    torch.save(model, 'full_model.pt')         # 完整模型
    

2. TensorFlow 格式

  • SavedModel(目录)

    • TensorFlow的通用格式,包含模型结构、权重和计算图。
    • 适合跨平台部署(如TF Serving、TFLite)。
  • HDF5(.h5

    • Keras模型的保存格式,可存储模型结构和权重。
  • 示例代码

    python

    model.save('saved_model')       # SavedModel格式
    model.save('model.h5')          # HDF5格式
    

3. ONNX(Open Neural Network Exchange)

  • 用途:跨框架的开放格式,支持PyTorch、TensorFlow等模型的交换。

  • 特点

    • 标准化计算图表示,支持硬件加速(如ONNX Runtime)。
    • 适合推理优化,但不支持训练。
  • 示例代码(PyTorch转ONNX):

    python

    torch.onnx.export(model, input_sample, 'model.onnx', opset_version=13)
    

4. GGML / GGUF(用于CPU推理的量化格式)

  • 用途:专为CPU推理设计的轻量级格式,常见于Llama.cpp等库。

  • 特点

    • GGML:早期格式,支持整数量化(如4-bit、8-bit)。
    • GGUF:改进版(2023年推出),更灵活的元数据支持。
  • 工具链

    • 使用convert.py将PyTorch模型转为GGUF,再通过llama.cpp推理。

5. SafeTensors

  • 用途:由Hugging Face推出的安全张量存储格式。

  • 特点

    • 避免传统Pickle的反序列化风险(如恶意代码注入)。
    • 支持快速加载和内存映射。
  • 示例代码

    python

    from safetensors import safe_open
    with safe_open('model.safetensors', framework='pt') as f:
        weights = f.get_tensor('weight')
    

6. NVIDIA TensorRT(.engine

  • 用途:NVIDIA的高性能推理引擎格式。

  • 特点

    • 针对NVIDIA GPU优化,支持FP16/INT8量化。
    • 需通过ONNX或直接转换生成。
  • 工具链

    bash

    trtexec --onnx=model.onnx --saveEngine=model.engine
    

7. 其他格式

  • Core ML(.mlmodel :苹果生态的移动端推理格式。
  • TFLite(.tflite :TensorFlow的轻量级移动/嵌入式格式。
  • PaddlePaddle(.pdparams :百度飞桨的模型格式。

格式选择建议

场景推荐格式
PyTorch训练/微调.pt / .pth
跨框架部署ONNX
CPU端轻量化推理GGUF / GGML
NVIDIA GPU高性能推理TensorRT(.engine
安全权重分发SafeTensors
移动端(iOS)Core ML