部署配置
以下是部署配置的类定义。它继承自 UpdateDeploymentConfig。
class DeploymentConfig(BaseModel):
base_model: str # required
accelerator: str | None = Field(default=None)
custom_args: list[str] | None = Field(default=None)
cooldown_time: PositiveInt | None = Field(default=None, )
hf_token: str | None = Field(default=None)
min_replicas: NonNegativeInt | None = Field(default=None)
max_replicas: PositiveInt | None = Field(default=None)
scale_up_threshold: PositiveInt | None = Field(default=None)
quantization: str | None = Field(default=None)
uses_guaranteed_capacity: bool | None = Field(default=None)
max_total_tokens: int | None = Field(default=None)
lorax_image_tag: str | None = Field(default=None)
request_logging_enabled: bool | None = Field(default=None)
direct_ingress: bool | None = Field(default=None)
preloaded_adapters: list[str] | None = Field(default=None)
speculator: str = Field(default=None)
prefix_caching: bool | None = Field(default=None)
默认情况下,Predibase设置以下默认值(可能会更改):
accelerator:None。如果未指定,Predibase会根据您的套餐等级、提供的基础模型和可用性选择最合适的选项。cooldown_time:3600秒 (1小时)min_replicas:0max_replicas:1(免费/开发版最多3个副本,企业版最多6个副本)scale_up_threshold:1uses_guaranteed_capacity:False(该部署是否应从您为给定加速器购买的保证容量中获取资源)max_total_tokens:None. 部署每个请求将处理的最大token数量(同时计算输入和输出token)。还会设置其他一些与token相关的参数,详情请参阅下面的注释。如果未指定,则会根据给定模型选择合理的默认值。lorax_image_tag:None. Predibase 为 LoRAX 使用一个默认的提交标签,该标签会定期更新。高级客户可以使用此参数,但不建议一般用户使用。request_logging_enabled:False. 仅适用于企业SaaS客户。如需修改您的计划,请联系销售部门。direct_ingress:False. 仅适用于VPC客户。创建一个直接连接到LLM的端点,绕过Predibase控制平面。preloaded_adapters:None. 一个适配器ID列表,用于在部署初始化时预加载。通过将适配器预加载到内存中来减少请求延迟。仅支持predibase托管的适配器。speculator:None. 指定一个Turbo或Turbo LoRA适配器作为部署的推测器。使用格式选择特定适配器,/ auto让Predibase选择合理的默认值(参见NOTES),disabled表示不使用推测器。如果未指定,默认值为auto。prefix_caching:None. 为部署启用前缀缓存。前缀缓存是一项实验性功能,可以通过缓存中间结果来加速推理。保持值为None将使用部署的Lorax镜像的默认值(Lorax 0.12.1版本默认为False)。
自动扩缩容通过min_replicas、max_replicas和scale_up_threshold参数进行配置。如果min_replicas != max_replicas,那么Predibase将根据流量负载在这两个值之间自动上下扩缩。min_replicas表示在任何给定时间可以运行的最小副本数;如果设置为0,则当没有流量时,您的部署将缩减为零副本。scale_up_threshold表示单个LLM副本在扩展任何额外副本之前将处理的并发请求数。该值高度依赖于您的使用场景,我们建议通过实验找到一个最佳数字以满足您的吞吐量需求。
如果要部署一个"best effort"自定义基础模型:
- 您必须提供一个accelerator
- 如果部署的是私有模型,必须提供
hf_token(您的Huggingface令牌)。
量化是可选的,取决于模型,但可用的选择包括:none(相当于fp16量化)、fp8和bitsandbytes-nf4。
Notes
- 对于
base_model,您可以使用可用模型列表中提供的简称,也可以提供huggingface模型的路径(例如meta-llama/Meta-Llama-3-8B)。 - 您可以选择性地为基础模型指定Hugging Face版本,方法是在
base_model参数中使用model@revision格式。 - 设置
max_total_tokens同时也会设置另外两个 Lorax 参数:max_batch_prefill_tokens(预填充操作的最大 token 数)和max_input_length(输入 token 的最大数量)。这两个参数都被设置为max_total_tokens-1。 - 当
speculator设置为auto时,部署将根据其基础模型使用预配置的speculator,如果没有可用的基础模型,则使用用户提供的预加载Turbo或Turbo LoRA适配器之一。相反,当speculator设置为disabled时,不允许预加载任何Turbo LoRA或Turbo适配器(即不能在preloadedAdapters中指定)。
自定义参数
Predibase部署由LoRAX提供支持,custom args参数可用于配置lorax CLI可用的大部分启动器参数。该参数接受一个字符串列表,这些字符串应等同于您传递给CLI的参数,其中每个参数名称和值都成为列表中的一个项。因此:
lorax-launcher --compile --eager-prefill true
将变为:
custom_args = ["--compile", "--eager-prefill", "true"]
以下是可用参数列表(其他lorax参数可以直接使用上述SDK参数设置):
adapter-id- 要加载的适配器名称。格式为repoName/repoVersionsource- 要加载的模型来源。adapter-source- 要加载的适配器来源。revision- 如果加载的是huggingface模型,此处指定模型的字面修订版本。可以是具体的提交ID或分支名称,例如refs/pr/2。validation-workers- 路由器内部用于负载验证和截断的分词器工作线程数量。sharded- 是否在多个GPU之间分片模型quantize- 如果您不想使用给定机器上的所有GPU,可以设置使用的分片数量。compile- 是否希望将模型编译为CUDA图。speculative-tokens- 模型每步生成的推测标记数量。dtype- 强制应用于模型的类型max-concurrent-requests- 此特定部署的最大并发请求数。max-best-of-best-of的最大允许值(该参数会一次性生成N个结果并返回最佳的那个)max-stop-sequences-stop-sequences允许的最大值max-input-length- 允许的最大输入长度(以token数量表示)max-total-tokens- 可以一次性处理和生成的最大token数量waiting-served-ratio- 等待查询与运行查询的比率max-batch-prefill-tokens- 限制预填充操作的token数量。max-batch-total-tokens- 批次中潜在token的总数。max-waiting-tokens- 在强制将等待查询放入批次之前可以通过的token数量(如果批次大小允许的话)。eager-prefill- 是否优先在解码前运行预填充max-active-adapters- 可以放置在GPU上并同时接受请求的适配器的最大数量。adapter-cycle-time-s- 适配器交换之间的时间,单位为秒。adapter-memory-fraction- 为将适配器加载到GPU而预留的内存比例。watermark-gammawatermark-deltatokenizer-config-path- 分词器配置文件的路径。