GGUF 格式简介
在人工智能领域,大型语言模型的发展日新月异。然而,随着模型规模的不断扩大,这些庞大的神经网络模型在存储、传输和加载上面临着一系列挑战。传统的文件格式在处理这些庞大的数据集时显得力不从心,不仅效率低下,而且兼容性和扩展性也难以满足日益增长的需求。
在这样的背景下,GGUF(GPT-Generated Unified Format)应运而生。由开发者 Georgi Gerganov 提出,GGUF 格式是专为大型语言模型设计的二进制文件格式,旨在解决当前大模型在实际应用中遇到的存储效率、加载速度、兼容性和扩展性等问题。GGUF 通过优化数据结构和编码方式,显著提升了模型文件的存储效率,同时保证了快速的加载性能。此外,它的设计考虑了跨平台和跨框架的兼容性,使得模型能够无缝地在不同的硬件和软件环境中运行,极大地促进了大型模型的广泛应用和进一步发展。

当前,GGUF 格式广泛应用于各类大模型的部署和分享,特别是在 Hugging Face 等开源社区中广受欢迎。GGUF 格式模型在实际使用中体现出的主要特点和优势包括:
- 高效存储:GGUF 格式优化了数据的存储方式,支持多种量化级别(如 Q4_K_M, Q8_0 等),减少了存储空间的占用,这对于大型模型尤为重要,因为它们通常包含大量的参数。
- 快速加载:GGUF 格式支持内存映射技术,实现快速加载模型数据,这对于需要即时响应的应用场景非常有用,比如在线聊天机器人或实时翻译系统。
- 兼容性:作为一种统一的格式,GGUF 旨在提高不同平台和框架之间的兼容性,使得模型可以在不同的环境和硬件上无缝运行。
- 可扩展性:随着模型规模的不断扩大,GGUF 格式设计时考虑到了未来的扩展性,以适应更大规模的模型和更复杂的数据结构。
Yuan2.0-2B 模型的 GGUF 应用
Yuan2.0 模型简介
源 2.0 是浪潮信息发布的新一代基础语言大模型。我们开源了全部的 3 个模型源 2.0-102B,源 2.0-51B 和源 2.0-2B。并且我们提供了预训练,微调,推理服务的相关脚本,以供研发人员做进一步的开发。源 2.0 是在源 1.0 的基础上,利用更多样的高质量预训练数据和指令微调数据集,令模型在语义、数学、推理、代码、知识等不同方面具备更强的理解能力。
更多详情请参考 Yuan2.0 模型:
- 技术报告:https://arxiv.org/ftp/arxiv/papers/2311/2311.15786.pdf
- Github: https://github.com/IEIT-Yuan/Yuan-2.0
本项目基于 llama.cpp(version:b1742)在 Windows 系统(CPU Only)上对源 2.0-2B 模型的适配。本项目的 Github 地址为:llamacpp for Yuan (https://github.com/IEIT-Yuan/3rd_party/)
由于源 2.0 模型结构与 llama 结构存在差异,针对源 2.0 模型(Yuan2.0-2B)模型 LFA 结构,进行如下修改:
- llama 计算图中添加 LFA 结构,修改 ggml_conv_1d 逻辑,以适配源 2.0,保证前后序列长度不变;
- llama 计算图中添加 q、k 混合相关的逻辑;
- 修改 IM2COL 算子,修改数组的读取方式;
- 修改 ADD 算子,将卷积模块的输出进行转置,以适配后面的计算;
- 修改 concat 算子,以适配 q、k 混合的逻辑;
- 支持多线程推理,加速生成速率;
目前支持 fp16 精度模型的 gguf 文件转换,后续会持续进行其他精度的工作。




