IDE 集成

MLC LLM 现在支持在多个 IDE 上进行代码补全。这意味着您可以通过 MLC LLM 的 REST API 轻松将具有编码能力的大语言模型集成到您的 IDE 中。这里我们提供了如何实现这一点的逐步指南。

转换模型权重

要在任何平台上使用 MLC LLM 运行模型,您需要将模型权重转换为 MLC 格式(例如 CodeLlama-7b-hf-q4f16_1-MLC)。您可以随时参考 转换模型权重 以获取有关如何转换模型权重的详细说明。如果您使用的是自己的模型权重,即您在个人代码库上微调了模型,那么按照这些步骤正确转换相应的权重非常重要。然而,也可以从原始模型下载预编译的权重,这些权重以 MLC 格式提供。查看所有预编译权重的完整列表 此处

示例

# convert model weights
mlc_llm convert_weight ./dist/models/CodeLlama-7b-hf \
   --quantization q4f16_1 \
   -o ./dist/CodeLlama-7b-hf-q4f16_1-MLC

编译模型

编译模型架构是优化给定平台推理的关键步骤。然而,编译依赖于多个会影响运行时的设置。此配置在 mlc-chat-config.json 文件中指定,该文件可以通过 gen_config 命令生成。您可以了解更多关于 gen_config 命令的信息 此处

示例

# generate mlc-chat-config.json
mlc_llm gen_config ./dist/models/CodeLlama-7b-hf \
   --quantization q4f16_1 --conv-template LM \
   -o ./dist/CodeLlama-7b-hf-q4f16_1-MLC

备注

请确保将 --conv-template 标志设置为 LM。此模板专门用于执行普通的 LLM 补全,通常被代码补全模型采用。

生成 MLC 模型配置文件后,我们就可以编译并创建模型库了。您可以了解更多关于 compile 命令的信息 此处

示例

# compile model library with specification in mlc-chat-config.json
mlc_llm compile ./dist/CodeLlama-7b-hf-q4f16_1-MLC/mlc-chat-config.json \
   --device cuda -o ./dist/libs/CodeLlama-7b-hf-q4f16_1-cuda.so

备注

生成的模型库可以在多个模型变体之间共享,只要架构和参数数量不变,例如相同的架构但不同的权重(您的微调模型)。

设置推理入口点

您现在可以使用 MLC serve 模块在本地部署编译后的模型。要了解更多关于 MLC LLM API 的详细信息,请访问我们的 REST API 页面。

示例

python -m mlc_llm.serve.server \
   --model dist/CodeLlama-7b-hf-q4f16_1-MLC \
   --model-lib ./dist/libs/CodeLlama-7b-hf-q4f16_1-cuda.so

Configure the IDE Extension

部署 LLM 后,我们可以轻松地将 IDE 与 MLC Rest API 连接。在本指南中,我们将使用 Hugging Face 代码补全扩展 llm-ls,它支持多个 IDE(例如 vscodeintellijnvim)以连接到外部 OpenAI 兼容 API(即我们的 MLC LLM REST API)。

在您的 IDE 上安装扩展后,打开 settings.json 扩展配置文件:

settings.json

然后,确保将以下设置替换为相应的值:

"llm.modelId": "dist/CodeLlama-7b-hf-q4f16_1-MLC"
"llm.url": "http://127.0.0.1:8000/v1/completions"
"llm.backend": "openai"

这将使扩展能够向 MLC Serve API 发送 OpenAI 兼容请求。此外,您可以随意调整 API 参数。请参阅 REST API 文档以获取有关这些 API 参数的更多详细信息。

"llm.requestBody": {
   "best_of": 1,
   "frequency_penalty": 0.0,
   "presence_penalty": 0.0,
   "logprobs": false,
   "top_logprobs": 0,
   "logit_bias": null,
   "max_tokens": 128,
   "seed": null,
   "stop": null,
   "suffix": null,
   "temperature": 1.0,
   "top_p": 1.0
}

llm-ls 扩展支持多种不同的模型代码补全模板。选择最适合您模型的模板,即具有正确分词器和中间填充标记的模板。

llm-ls 模板

一切设置完成后,扩展将准备好使用来自 MLC Serve API 的响应,在您的 IDE 上提供开箱即用的代码补全功能。

IDE 代码补全

结论

如果您有任何问题,请告诉我们。欢迎在 MLC LLM 仓库 上提出问题!