Help us learn about your current experience with the documentation. Take the survey.

GitLab Duo 自托管支持的平台

  • 版本:Premium, Ultimate
  • 附加组件:GitLab Duo Enterprise
  • 产品:GitLab 私有化部署

有多个平台可用于托管您的自托管大型语言模型 (LLM)。每个平台都有独特的功能和优势,可以满足不同的需求。以下文档总结了当前支持的选项。如果您想使用的平台未在此文档中列出,请在平台请求 issue (issue 526144) 中提供反馈。

用于自托管模型部署

vLLM

vLLM 是一个高性能推理服务器,专为高效利用内存来托管 LLM 而优化。它支持模型并行,并能轻松集成到现有工作流中。

要安装 vLLM,请参阅 vLLM 安装指南。您应安装 v0.6.4.post1 版本 或更高版本。

端点配置

在 GitLab 中为任何兼容 OpenAI API 的平台(例如 vLLM)配置端点 URL 时:

  • URL 必须以 /v1 作为后缀。
  • 如果使用默认的 vLLM 配置,端点 URL 将是 https://<hostname>:8000/v1
  • 如果您的服务器配置在代理或负载均衡器后面,您可能不需要指定端口,这种情况下 URL 将是 https://<hostname>/v1

查找模型名称

模型部署后,要获取 GitLab 中模型标识符字段的模型名称,请查询 vLLM 服务器的 /v1/models 端点:

curl \
  --header "Authorization: Bearer API_KEY" \
  --header "Content-Type: application/json" \
  http://your-vllm-server:8000/v1/models

模型名称是响应中 data.id 字段的值。

示例响应:

{
  "object": "list",
  "data": [
    {
      "id": "Mixtral-8x22B-Instruct-v0.1",
      "object": "model",
      "created": 1739421415,
      "owned_by": "vllm",
      "root": "mistralai/Mixtral-8x22B-Instruct-v0.1",
      // Additional fields removed for readability
    }
  ]
}

在此示例中,如果模型的 idMixtral-8x22B-Instruct-v0.1,您应在 GitLab 中将模型标识符设置为 custom_openai/Mixtral-8x22B-Instruct-v0.1

有关更多信息,请参阅:

示例:

Mistral-7B-Instruct-v0.2

  1. 从 HuggingFace 下载模型:

    git clone https://<your-hugging-face-username>:<your-hugging-face-token>@huggingface.co/mistralai/Mistral-7B-Instruct-v0.3
  2. 运行服务器:

    vllm serve <path-to-model>/Mistral-7B-Instruct-v0.3 \
       --served_model_name <choose-a-name-for-the-model>  \
       --tokenizer_mode mistral \
       --tensor_parallel_size <number-of-gpus> \
       --load_format mistral \
       --config_format mistral \
       --tokenizer <path-to-model>/Mistral-7B-Instruct-v0.3

Mixtral-8x7B-Instruct-v0.1

  1. 从 HuggingFace 下载模型:

    git clone https://<your-hugging-face-username>:<your-hugging-face-token>@huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1
  2. 重命名 token 配置:

    cd <path-to-model>/Mixtral-8x7B-Instruct-v0.1
    cp tokenizer.model tokenizer.model.v3
  3. 运行模型:

    vllm serve <path-to-model>/Mixtral-8x7B-Instruct-v0.1 \
      --tensor_parallel_size 4 \
      --served_model_name <choose-a-name-for-the-model> \
      --tokenizer_mode mistral \
      --load_format safetensors \
      --tokenizer <path-to-model>/Mixtral-8x7B-Instruct-v0.1

禁用请求日志以减少延迟

在生产环境中运行 vLLM 时,您可以使用 --disable-log-requests 标志来禁用请求日志,从而显著降低延迟。

仅在不需要详细请求日志时使用此标志。

禁用请求日志可以最大程度地减少详细日志带来的开销,尤其是在高负载情况下,并有助于提高性能水平。

vllm serve <path-to-model>/<model-version> \
--served_model_name <choose-a-name-for-the-model>  \
--disable-log-requests

根据内部基准测试,此更改能显著改善响应时间。

用于云托管模型部署

AWS Bedrock

AWS Bedrock 是一项完全托管的服务,允许开发者使用来自领先 AI 公司的预训练模型来构建和扩展生成式 AI 应用程序。它与其他 AWS 服务无缝集成,并提供按需付费的定价模式。

要访问 AWS Bedrock 模型:

  1. 配置 IAM 凭据以使用适当的 AWS IAM 权限访问 Bedrock:

  2. 在启动 Docker 容器时,通过导出适当的 AWS SDK 环境变量(例如 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION_NAME)来验证您的 AI 网关实例。

    有关更多信息,请参阅 AWS Identity and Access Management (IAM) 指南

    AI 网关当前不支持临时凭据。有关为 Bedrock 添加使用实例配置文件或临时凭据支持的信息,请参阅 issue 542389

  3. 可选。要设置在虚拟私有云 (VPC) 中运行的私有 Bedrock 端点,请确保在启动 AI 网关容器时,已使用您的内部 URL 配置 AWS_BEDROCK_RUNTIME_ENDPOINT 环境变量。

    示例配置:AWS_BEDROCK_RUNTIME_ENDPOINT = https://bedrock-runtime.{aws_region_name}.amazonaws.com

    对于 VPC 端点,URL 格式可能有所不同,例如 https://vpce-{vpc-endpoint-id}-{service-name}.{aws_region_name}.vpce.amazonaws.com

有关更多信息,请参阅 Amazon Bedrock 中支持的基础模型

Azure OpenAI

Azure OpenAI 提供对 OpenAI 强大模型的访问,使开发者能够将先进的 AI 功能集成到他们的应用程序中,并具备强大的安全性和可扩展的基础设施。

有关更多信息,请参阅:

使用多个模型和平台

使用 GitLab Duo 自托管,您可以在同一个 GitLab 实例中使用多个模型和平台。

例如,您可以配置一个功能使用 Azure OpenAI,另一个功能使用 AWS Bedrock 或由 vLLM 托管的自托管模型。

这种设置为您提供了为每个用例选择最佳模型和平台的灵活性。模型必须受支持,并通过兼容的平台进行托管。

有关设置不同提供商的更多信息,请参阅: