littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于MindSpore的模型ckpt转GGUF工具

项目简介

本项目是一个用于将MindSpore生成的模型checkpoint(ckpt)文件转换为GGUF格式文件的工具。GGUF是一种特定的神经网络模型文件格式,用于存储模型的张量信息和元数据。该工具可帮助用户快速将MindSpore生成的模型文件转换为Ollama可以加载的GGUF格式文件。

项目的主要特性和功能

  1. 支持从MindSpore checkpoint文件提取张量信息,可读取MindSpore生成的ckpt文件并提取其中的张量信息。
  2. 提供GGUF文件的读取和解析功能,能读取GGUF文件的结构信息并提取其中的超参数。
  3. 支持元数据的提取和JSON格式输出,可将GGUF文件中的超参数信息提取并保存为JSON文件。
  4. 可处理名称映射,支持将MindSpore的层名称映射为GGUF格式的层名称,确保转换后的文件结构正确。
  5. 生成GGUF文件,通过提供的脚本,将MindSpore的ckpt文件转换为GGUF格式文件,并支持在Ollama中加载使用。

安装使用步骤

依赖项

  • Python
  • gguf==0.6.0
  • mindspore
  • numpy

使用步骤

  1. 准备MindSpore的checkpoint文件:可以使用MindSpore生成的ckpt文件,例如通过mindformers项目提供的ckpt文件,或者使用自己训练的ckpt文件。
  2. 下载参考的GGUF文件:从Hugging Face或Ollama模型库中下载对应的GGUF文件,用于提取GGUF文件的结构信息。
  3. 创建模型目录:在models目录下创建对应的模型目录,例如models/llama2,用于存放相关配置文件和ckpt文件。
  4. 提取GGUF文件的超参数信息:使用make_gguf_meta_data_json.py脚本从GGUF文件中提取超参数信息,并生成一个JSON文件。
  5. 生成层名称映射字典:创建一个JSON文件,用于将MindSpore的层名称映射为GGUF格式的层名称。
  6. 执行转换脚本:修改main_writer.py中的参数,执行脚本生成GGUF文件。确保提供正确的超参数JSON文件、层名称映射JSON文件以及ckpt文件路径。
  7. 在Ollama中导入模型:编写modelfile文件,并使用Ollama命令行工具导入生成的GGUF文件。例如: shell ollama create llama2_new -f llama2_ms.modelfile ollama run llama2_new

注意事项

  1. 确保使用的MindSpore版本和GGUF格式版本兼容。
  2. 在转换过程中,MindSpore导出的ckpt文件的张量可能与GGUF文件的张量存在转置关系,需通过对比确认是否需要转置。
  3. 对于复杂的模型,可能需要进一步调整层名称映射或处理张量信息。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】