Chapter 08
📌 其他
📌 其他
🔧 模型转换
- ./scripts/convert_model.py 可用于
torch / transformers两种模型格式之间的相互转换。 - 如无特殊说明,
MiniMind主线发布的开源模型通常以Transformers格式提供;若使用原生torch权重,请先执行torch2transformers转换。
🖥️ 基于 MiniMind 的 API 服务接口
-
./scripts/serve_openai_api.py 提供了一个兼容 OpenAI API 的轻量聊天服务,便于将自己的模型接入 FastGPT、OpenWebUI、Dify 等第三方 UI。
-
当前接口额外支持
reasoning_content、tool_calls、open_thinking等字段,适合直接用于 Tool Calling / Thinking 场景。 -
从 HuggingFace 下载模型权重后,目录结构示例如下:
codeminimind (root dir) ├─<MiniMind-Model-Name>(例如minimind-3) | ├── config.json | ├── generation_config.json | ├── model_minimind.py (可选,取决于模型导出形式) | ├── pytorch_model.bin or model.safetensors | ├── special_tokens_map.json | ├── tokenizer_config.json | ├── tokenizer.json -
启动服务端
bashcd scripts && python serve_openai_api.py -
测试服务接口
bashcd scripts && python chat_api.py -
API 请求示例(兼容 OpenAI API 格式)
bashcurl http://localhost:8998/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "model-identifier", "messages": [ { "role": "user", "content": "世界上最高的山是什么?" } ], "temperature": 0.7, "max_tokens": 1024, "stream": true, "open_thinking": true }'
SGLang
SGLang 是高性能大模型推理引擎,支持 RadixAttention、连续批处理等优化技术,能够提供较低延迟与较高吞吐。
⚠️ 需要 CUDA 环境,按需使用。也可在 RL 训练脚本中选择 SGLang 作为 rollout / 推理引擎以提升训练吞吐。
以 OpenAI-compatible API server 形式启动模型:
python -m sglang.launch_server --model-path /path/to/model --attention-backend triton --host 0.0.0.0 --port 8998vllm
vLLM 是目前非常常用的高效推理框架,适合快速部署大模型,并在显存利用率与吞吐量之间取得较好平衡。
⚠️ 需要 CUDA 环境,按需使用。
以 OpenAI-compatible API server 形式启动模型:
vllm serve /path/to/model --model-impl transformers --served-model-name "minimind" --port 8998llama.cpp
llama.cpp 是一个轻量且实用的 C++ 推理框架,可直接在命令行中使用,支持多线程推理,也支持部分 GPU 加速方案。
目录结构:建议将 llama.cpp 与模型目录放在同级路径下
parent/
├── project/ # 你的项目目录
│ ├── minimind 模型路径/ # HuggingFace 格式模型目录
│ │ ├── config.json
│ │ ├── model.safetensors
│ │ └── ...
│ └── ...
└── llama.cpp/ # llama.cpp 项目目录
├── build/
├── convert_hf_to_gguf.py
└── ...0、参考 llama.cpp 官方文档完成安装(如 cmake 等依赖)
1、在 convert_hf_to_gguf.py 的 get_vocab_base_pre 函数末尾插入:
# 添加 MiniMind tokenizer 支持(此处可临时复用一个兼容项,如 qwen2)
if res is None:
res = "qwen2"2、将 HuggingFace 格式的 minimind 模型转换为 GGUF:
# 在 llama.cpp 目录下执行,将在模型目录下生成对应的 gguf 文件
python convert_hf_to_gguf.py /path/to/minimind-model3、量化模型(可选)
./build/bin/llama-quantize /path/to/model/xxxx.gguf /path/to/model/xxxx.q8.gguf Q8_04、命令行推理测试
./build/bin/llama-cli -m /path/to/model/xxxx.ggufollama
Ollama 是本地运行大模型的常用工具,支持多种开源 LLM,使用方式简洁,部署门槛较低。
1、通过 Ollama 加载自定义 GGUF 模型
在模型目录下新建 minimind.modelfile 文件,并写入如下配置模板:
FROM /path/to/model/xxxx.gguf
SYSTEM "你的名字叫MiniMind,你是一个乐于助人、知识渊博的AI助手。请用完整且友好的方式回答用户问题,当被问到名字时请回答MiniMind。"
TEMPLATE """{{- if .Tools }}<|im_start|>system
{{ if .System }}{{ .System }}
{{ end }}# Tools
You may call one or more functions to assist with the user query.
You are provided with function signatures within <tools></tools> XML tags:
<tools>
{{- range .Tools }}
{"type": "function", "function": {{ .Function }}}
{{- end }}
</tools>
For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
<tool_call>
{"name": <function-name>, "arguments": <args-json-object>}
</tool_call><|im_end|>
{{ else if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 -}}
{{- if eq .Role "user" }}<|im_start|>user
{{ .Content }}<|im_end|>
{{ else if eq .Role "assistant" }}<|im_start|>assistant
<think>
{{ .Thinking }}
</think>
{{ .Content }}
{{- if .ToolCalls }}
{{- range .ToolCalls }}
<tool_call>
{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
</tool_call>
{{- end }}
{{- end }}
{{- if not $last }}<|im_end|>
{{ end }}
{{- else if eq .Role "tool" }}<|im_start|>user
<tool_response>
{{ .Content }}
</tool_response><|im_end|>
{{ end }}
{{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
{{ if and $.IsThinkSet $.Think -}}
<think>
{{ else -}}
<think>
</think>
{{ end -}}
{{ end }}
{{- end }}"""
PARAMETER repeat_penalty 1
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>"
PARAMETER temperature 0.9
PARAMETER top_p 0.9
PARAMETER num_ctx 81922、加载并命名本地模型
ollama create -f minimind.modelfile minimind-local3、启动推理
ollama run minimind-local# 1. 为本地模型重命名为你的 `ollama-account/minimind` 的 tag
ollama cp minimind-local:latest your_username/minimind:latest
# 2. 推送模型
ollama push your_username/minimind:latest⭐️ 也可以直接使用我提供的 Ollama 模型快速启动:
ollama run jingyaogong/minimind-3
>>> 你叫什么名字
我是一个语言模型...MNN
MNN 是面向端侧的 AI 推理引擎,支持多种开源 LLM 的轻量化部署与高性能推理。
- 模型转换
cd MNN/transformers/llm/export
# 导出 4-bit HQQ 量化的 MNN 模型
python llmexport.py --path /path/to/模型路径/ --export mnn --hqq --dst_path 模型路径-mnn- 在 Mac 或手机端测试
./llm_demo /path/to/模型路径-mnn/config.json prompt.txt或者下载 APP 进行测试
以上第三方框架的更多用法请参考对应官方文档😊
👨💻 更多内容
-
🔗从MiniMind-LLM微调扩散语言模型
-
🔗模型的generate方法说明
-
🔗从 MiniMind 训练线性注意力模型
