跳至主要内容

pb.deployments.update

pb.deployments.update

更新现有的无服务器部署

参数:

   deployment_ref: str
私有无服务器部署的名称或UUID

   配置: 更新部署配置


返回:

   部署

使用方法:

要更新部署,请调用pb.deployments.update,并为config参数提供一个UpdateDeploymentConfig实例,仅设置您想要更改的字段。任何未设置的字段将保持不变。

示例:

假设我们有一个名为 my-mistral-7b 的现有部署。

pb.deployments.get("my-mistral-7b")
NOTE

hf_token字段不会显示在pb.deployments.get的输出中,即使已设置,但它会在后端持久保存。

这可能会返回以下配置。该配置指定了一些默认适配器,并将自动扩缩容设置为1到2个副本之间。自动扩缩容规则配置为:如果流量持续低至少600秒,则缩减至1个副本;如果当前扩容的单个副本有至少一个待处理请求,则扩容至两个副本。

Deployment(
name="my-mistral-7b",
# <...>
config=UpdateDeploymentConfig(
custom_args=["--preloaded-adapter-ids", "my_adapter/1"], cooldown_time=600, hf_token=None, min_replicas=1, max_replicas=2, scale_up_threshold=1
),
)

通过向pb.deployments.update提供类似以下内容来更新部署配置。该配置指定了一个额外的预加载适配器(请注意,我们必须在新的列表中包含现有适配器)。它还更改了自动缩放行为:当没有流量时,部署现在可以缩减到零副本,并且我们在低流量持续1200秒后缩减副本数量(之前是600秒)。

pb.deployments.update(
deployment_ref="my-mistral-7b",
config=UpdateDeploymentConfig(
cooldown_time=1200, # Changed from 600
custom_args=["--preloaded-adapter-ids", "my_adapter/1", "--preloaded-adapter-ids", "my_other_adapter/1"], # Added a second adapter
min_replicas=0, # Changed from 1
)
)

现在 pb.deployments.get("my-mistral-7b") 将返回:

Deployment(
name="my-mistral-7b",
# <...>
config=UpdateDeploymentConfig(
custom_args=[], cooldown_time=1200, hf_token=None, min_replicas=0, max_replicas=2, scale_up_threshold=1
),
)

请注意,max_replicase 仍保持非默认值2,即使在调用 pb.deployments.update 时未明确设置该值。

POTENTIAL SERVICE INTERRUPTION

在底层机制中,当更新部署时,系统会在创建新部署版本的任何副本之前,先关闭一个旧部署的副本。

如果您的部署只有1个副本,或者当前仅运行1个副本,这将导致该副本下线从而造成服务中断。

为了防止停机,您可以先将部署更新为min_replicas=2,以确保在更新期间至少有一个副本可以处理流量。更新部署的副本数量不会导致停机。

NOTES
  • 大量(高级)配置参数通过custom_args字段进行设置。更多信息请参阅DeploymentConfig的custom_args部分
  • 要将Lorax更新至最新支持的版本,请在config参数中指定lorax_image_tag=""
  • 并非所有lorax CLI参数都受支持。传递不受支持的参数将导致错误。
  • SDK和后端不会验证custom_args的值是否为有效的lorax参数。传递无效值将导致Lorax无法启动部署。(但现有部署将继续提供服务。) custom_args是作为高级用户的应急功能设计的,这些用户需要向Lorax传递额外参数。
  • 如果在config参数中提供了custom_args,它将替换现有的custom_args列表。如果您想添加到现有列表中,则必须在新列表中包含所有现有值。