# 推理端点

Inference Endpoints 提供了一种安全的生产级解决方案，可轻松将任何 `transformers`、`sentence-transformers` 和 `diffusers` 模型部署到由 Hugging Face 管理的专用且支持自动扩缩容的基础设施上。Inference Endpoint 基于 [Hub](https://huggingface.co/models) 上的模型构建。在本指南中，我们将学习如何使用 `huggingface_hub` 以编程方式管理 Inference Endpoints。有关 Inference Endpoints 产品本身的更多信息，请参阅其[官方文档](https://huggingface.co/docs/inference-endpoints/index)。

本指南假设 `huggingface_hub` 已正确安装，且您的机器已登录。如果尚未满足这些条件，请参阅 [快速入门指南](https://huggingface.co/docs/huggingface_hub/quick-start#quickstart)。支持 Inference Endpoints API 的最低版本为 `v0.19.0`。

> [!TIP]
> **新增：**现在可以通过简单的 API 调用，从 [HF 模型目录](https://endpoints.huggingface.co/catalog)部署推理端点。该目录是一份经过精心整理的模型列表，这些模型可以以优化后的配置进行部署。您无需进行任何配置，所有繁重的工作都由我们承担！所有模型和配置均经过测试，以确保提供最佳的成本/性能平衡。[create_inference_endpoint_from_catalog()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_inference_endpoint_from_catalog) 的工作方式与 [create_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_inference_endpoint) 相同，但需要传递的参数少得多。您可以使用 [list_inference_catalog()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.list_inference_catalog) 以编程方式获取该目录。
>
> 请注意，这仍然是一个实验性功能。如果您使用了它，请告诉我们您的想法！

每个目录模型都通过一个*配方*进行部署：即针对该模型经过测试的硬件与引擎组合。[list_inference_catalog()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.list_inference_catalog) 返回模型及其配方，并支持服务端过滤器（`accelerator`、`engine`、`license`、`task`、`search`、`limit`）：

```py
>>> from huggingface_hub import list_inference_catalog
>>> catalog = list_inference_catalog(task="text-generation", accelerator="neuron")
>>> catalog[0]
InferenceCatalogModel(repo_id='meta-llama/Llama-3.1-8B-Instruct', name='Llama-3.1-8B-Instruct', ...)
>>> catalog[0].recipes
[InferenceCatalogRecipe(id='sizzling-biryani-g4xsi1ac', accelerator='gpu', engine='vllm', gguf_file=None, revision=None),
 InferenceCatalogRecipe(id='artisanal-quinoa-yz9ynamx', accelerator='neuron', engine='vllmNeuron', gguf_file=None, revision=None)]
```

将 `repo_id` 传递给 [create_inference_endpoint_from_catalog()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_inference_endpoint_from_catalog) 以部署模型的默认配方，可选地通过 `accelerator`（`"cpu"`、`"gpu"` 或 `"neuron"`）和 `gguf_file` 进行细化，或者传递 `recipe_id` 以部署确切的配方：

```py
>>> from huggingface_hub import create_inference_endpoint_from_catalog
>>> endpoint = create_inference_endpoint_from_catalog(repo_id="openai/gpt-oss-120b")
>>> endpoint = create_inference_endpoint_from_catalog(recipe_id="artisanal-quinoa-yz9ynamx")
```

## 查找用于部署的硬件

[create_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_inference_endpoint) 接受的 `accelerator`、`vendor`、`region`、`instance_type` 和 `instance_size` 值之间存在相互依赖关系。使用 [list_inference_endpoints_hardware()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.list_inference_endpoints_hardware) 可以列出有效的组合，以及每小时的单价和您命名空间的加速器配额：

```py
>>> from huggingface_hub import list_inference_endpoints_hardware

>>> for hw in list_inference_endpoints_hardware():
...     if hw.accelerator == "gpu" and hw.status == "available":
...         print(hw.vendor, hw.region, hw.instance_type, hw.instance_size, hw.price_per_hour)
aws us-east-1 nvidia-l4 x1 0.8
aws us-east-1 nvidia-l4 x4 3.8
...
```

配额是按命名空间划分的，因此请传入您将要部署到的 `namespace`（默认为您自己的账户）：

```py
>>> list_inference_endpoints_hardware(namespace="my-org")
```

或通过 CLI：

```bash
hf endpoints hardware --accelerator gpu
```

## 创建推理端点

第一步是使用 [create_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_inference_endpoint) 创建一个推理端点：

```py
>>> from huggingface_hub import create_inference_endpoint

>>> endpoint = create_inference_endpoint(
...     "my-endpoint-name",
...     repository="gpt2",
...     framework="pytorch",
...     task="text-generation",
...     accelerator="cpu",
...     vendor="aws",
...     region="us-east-1",
...     type="authenticated",
...     instance_size="x2",
...     instance_type="intel-icl"
... )
```

或通过 CLI：

```bash
hf endpoints deploy my-endpoint-name --repo gpt2 --framework pytorch --accelerator cpu --vendor aws --region us-east-1 --instance-size x2 --instance-type intel-icl --task text-generation

# Deploy from the catalog with a single command
hf endpoints catalog deploy --repo openai/gpt-oss-120b

# Deploy from the catalog with a specific accelerator
hf endpoints catalog deploy --repo openai/gpt-oss-120b --accelerator gpu

# Deploy an exact catalog recipe, as listed by 'hf endpoints catalog ls'
hf endpoints catalog deploy --recipe artisanal-quinoa-yz9ynamx
```

在此示例中，我们创建了一个名为 `"my-endpoint-name"` 的 `authenticated` Inference Endpoint，用于为 [gpt2](https://huggingface.co/gpt2) 提供 `text-generation` 服务。`authenticated` Inference Endpoint 表示访问该 API 需要提供您的令牌。此外，我们还需要提供额外信息来配置硬件要求，例如供应商、区域、加速器、实例类型和大小。您可以在此处查看[可用资源列表](https://api.endpoints.huggingface.cloud/#/v2%3A%3Aprovider/list_vendors)。或者，为了操作方便，您可以使用 [Web 界面](https://ui.endpoints.huggingface.co) 手动创建 Inference Endpoint。有关高级设置及其用法的详细信息，请参阅此[指南](https://huggingface.co/docs/inference-endpoints/guides/advanced)。

[create_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_inference_endpoint) 返回的值为一个 [InferenceEndpoint](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint) 对象：

```py
>>> endpoint
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='pending', url=None)
```

或通过 CLI：

```bash
hf endpoints describe my-endpoint-name
```

这是一个 dataclass，用于保存有关端点的信息。您可以访问诸如 `name`、`repository`、`status`、`task`、`created_at`、`updated_at` 等重要属性。如有需要，您还可以通过 `endpoint.raw` 访问来自服务器的原始响应。

创建 Inference Endpoint 后，您可以在您的[个人仪表板](https://ui.endpoints.huggingface.co/)上找到它。

![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/huggingface_hub/inference_endpoints_created.png)

#### 使用自定义图像

默认情况下，Inference Endpoint 由 Hugging Face 提供的 docker 镜像构建。不过，可以使用 `custom_image` 参数指定任意 docker 镜像。一个常见的用例是使用 [text-generation-inference](https://github.com/huggingface/text-generation-inference) 框架来运行 LLM。可以这样操作：

```python
# Start an Inference Endpoint running Zephyr-7b-beta on TGI
>>> from huggingface_hub import create_inference_endpoint
>>> endpoint = create_inference_endpoint(
...     "aws-zephyr-7b-beta-0486",
...     repository="HuggingFaceH4/zephyr-7b-beta",
...     framework="pytorch",
...     task="text-generation",
...     accelerator="gpu",
...     vendor="aws",
...     region="us-east-1",
...     type="authenticated",
...     instance_size="x1",
...     instance_type="nvidia-a10g",
...     custom_image={
...         "healthRoute": "/health",
...         "env": {
...             "MAX_BATCH_PREFILL_TOKENS": "2048",
...             "MAX_INPUT_LENGTH": "1024",
...             "MAX_TOTAL_TOKENS": "1512",
...             "MODEL_ID": "/repository"
...         },
...         "url": "ghcr.io/huggingface/text-generation-inference:1.1.0",
...     },
... )
```

作为 `custom_image` 传入的值是一个字典，其中包含指向 docker 容器的 url 以及运行该容器的配置。有关更多详细信息，请参阅 [Swagger 文档](https://api.endpoints.huggingface.cloud/#/v2%3A%3Aendpoint/create_endpoint)。

对于托管在私有容器注册表中的镜像，请传入 `container_registry_username`，并在注册表要求时传入 `container_registry_password`。这些凭据仅支持纯自定义容器：

```python
>>> endpoint = create_inference_endpoint(
...     # Other endpoint and hardware arguments omitted for brevity.
...     custom_image={"url": "private.registry.example/my-image:latest", "port": 8080},
...     container_registry_username="user",
...     container_registry_password="password",
... )
```

等效的 CLI 选项为 `--container-registry-username` 和 `--container-registry-password`：

```bash
hf endpoints deploy my-endpoint ... --custom-image private.registry.example/my-image:latest \
  --container-registry-username user --container-registry-password password
```

`custom_image` 还支持 API 所支持的引擎特定容器类型，方法是以引擎名称（`vLLM`、`vLLMNeuron`、`sGLang`、`tgi`、`tgiNeuron`、`tei`、`llamacpp`、`hfServe` 等）作为字典的键，而不是将其保持为扁平结构。每个引擎都接受常规的容器字段（`url`、`port`、`healthRoute`）以及其自身的调优选项。任何顶层不包含 `url` 的字典都会原样转发给 API，因此后续添加到 API 中的引擎无需升级 `huggingface_hub` 即可正常工作：

```python
# Start an Inference Endpoint running the vLLM engine image
>>> endpoint = create_inference_endpoint(
...     "llama-3-1-8b-instruct-vllm",
...     repository="meta-llama/Llama-3.1-8B-Instruct",
...     framework="pytorch",
...     task="text-generation",
...     accelerator="gpu",
...     vendor="aws",
...     region="us-east-1",
...     instance_size="x1",
...     instance_type="nvidia-l4",
...     custom_image={
...         "vLLM": {
...             "url": "vllm/vllm-openai:v0.23.0",
...             "healthRoute": "/health",
...             "port": 8000,
...             "tensorParallelSize": 1,
...         }
...     },
... )
```

如果没有引擎键，相同的字典将作为普通的自定义容器发送，因此引擎特定的选项（此处为 `tensorParallelSize`）会被丢弃。

对于需要自定义入口点或运行时标志的容器，请传入 `container_command` 和/或 `container_args`（每个均为令牌列表）。它们对应于 API 负载中的 `model.command` 和 `model.args`。它们并不局限于自定义镜像：托管引擎镜像（例如 vLLM、SGLang）同样可以通过 `container_args` 接受引擎标志。通过 CLI 也可以使用相同的功能：`hf endpoints deploy ... --container-command "..." --container-args "..."`。

#### 多加速器实例上的并行

vLLM 和 SGLang 默认使用一个加速器，而端点会分配其实例中的所有加速器，因此如果不设置并行度，模型将只加载到一个加速器上，其余加速器处于空闲状态，同时系统仍会报告健康状态，这意味着你为所有加速器付费，却只获得单个加速器的吞吐量。这就是为什么 API 现在会拒绝此类部署。（TGI 从实例推导分片数量，不受此影响。）请设置 `tensorParallelSize` 以将一份模型副本分片到各个加速器上，或设置 `dataParallelSize`（仅限 vLLM）以在每个加速器上运行一份副本：

```py
>>> endpoint = create_inference_endpoint(
...     "gpt-oss-120b-vllm",
...     repository="openai/gpt-oss-120b",
...     framework="custom",
...     accelerator="gpu",
...     instance_size="x8",
...     instance_type="nvidia-h200",
...     region="us-east-1",
...     vendor="aws",
...     custom_image={"vLLM": {"url": "vllm/vllm-openai:v0.23.0", "tensorParallelSize": 8}},
... )
```

在 CLI 中，`--engine` 用于选择托管引擎镜像，并且这两个标志会被写入其配置中：

```bash
hf endpoints deploy gpt-oss-120b-vllm --repo openai/gpt-oss-120b --framework custom \
  --accelerator gpu --instance-size x8 --instance-type nvidia-h200 --region us-east-1 --vendor aws \
  --engine vllm --custom-image vllm/vllm-openai:v0.23.0 --tensor-parallel-size 8
```

若要重新调整已部署的端点，请单独将 `tensor_parallel_size` 传递给 [update()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.update) 或 `hf endpoints update`。`model.image` 作为整体发送，需要 `url`，因此会获取端点当前的镜像并就地更新：

```py
>>> endpoint.update(tensor_parallel_size=4)
```

`container_args`（`--tp 8`）并不等效：它作为命令行标志传入引擎，而非 API 用于对照实例加速器数量进行校验的 `model.image` 配置。请将其用于没有 image 字段的引擎标志，以及没有并行度字段的普通自定义容器。

### 获取或列出现有的 Inference Endpoints

在某些情况下，您可能需要管理之前创建的 Inference Endpoints。如果您知道其名称，可以使用 [get_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.get_inference_endpoint) 获取它，该方法会返回一个 [InferenceEndpoint](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint) 对象。或者，您可以使用 [list_inference_endpoints()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.list_inference_endpoints) 获取所有 Inference Endpoints 的列表。这两种方法都接受一个可选的 `namespace` 参数。您可以将 `namespace` 设置为任何您所属的组织。否则，它将默认为您的用户名。

```py
>>> from huggingface_hub import get_inference_endpoint, list_inference_endpoints

# Get one
>>> get_inference_endpoint("my-endpoint-name")
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='pending', url=None)

# List all endpoints from an organization
>>> list_inference_endpoints(namespace="huggingface")
[InferenceEndpoint(name='aws-starchat-beta', namespace='huggingface', repository='HuggingFaceH4/starchat-beta', status='paused', url=None), ...]

# List all endpoints from all organizations the user belongs to
>>> list_inference_endpoints(namespace="*")
[InferenceEndpoint(name='aws-starchat-beta', namespace='huggingface', repository='HuggingFaceH4/starchat-beta', status='paused', url=None), ...]
```

或通过 CLI：

```bash
hf endpoints describe my-endpoint-name
hf endpoints ls --namespace huggingface
hf endpoints ls --namespace '*'
```

## 检查部署状态

在本指南的其余部分中，我们将假设有一个名为 `endpoint` 的 [InferenceEndpoint](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint) 对象。您可能已经注意到，该端点具有类型为 [InferenceEndpointStatus](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpointStatus) 的 `status` 属性。当推理端点部署完成并可访问时，状态应为 `"running"`，并且 `url` 属性会被设置：

```py
>>> endpoint
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='running', url='https://jpj7k2q4j805b727.us-east-1.aws.endpoints.huggingface.cloud')
```

在达到 `"running"` 状态之前，Inference Endpoint 通常会经历 `"initializing"` 或 `"pending"` 阶段。您可以通过运行 [fetch()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.fetch) 来获取端点的新状态。与 [InferenceEndpoint](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint) 中所有向服务器发起请求的方法一样，`endpoint` 的内部属性会被就地修改：

```py
>>> endpoint.fetch()
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='pending', url=None)
```

或通过 CLI：

```bash
hf endpoints describe my-endpoint-name
```

与其在等待 Inference Endpoint 运行期间反复获取其状态，不如直接调用 [wait()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.wait)。该辅助函数接受 `timeout` 和 `fetch_every` 参数（以秒为单位），并会阻塞线程，直到 Inference Endpoint 部署完成。默认值分别为 `None`（无超时）和 `5` 秒。

```py
# Pending endpoint
>>> endpoint
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='pending', url=None)

# Wait 10s => raises a InferenceEndpointTimeoutError
>>> endpoint.wait(timeout=10)
    raise InferenceEndpointTimeoutError("Timeout while waiting for Inference Endpoint to be deployed.")
huggingface_hub._inference_endpoints.InferenceEndpointTimeoutError: Timeout while waiting for Inference Endpoint to be deployed.

# Wait more
>>> endpoint.wait()
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='running', url='https://jpj7k2q4j805b727.us-east-1.aws.endpoints.huggingface.cloud')
```

如果设置了 `timeout` 且 Inference Endpoint 加载耗时过长，则会引发 `InferenceEndpointTimeoutError` 超时错误。

## 运行推理

当您的 Inference Endpoint 启动并运行后，您就可以在其上执行推理了！

[InferenceEndpoint](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint) 具有两个属性 `client` 和 `async_client`，分别返回一个 [InferenceClient](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_client#huggingface_hub.InferenceClient) 和一个 [AsyncInferenceClient](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_client#huggingface_hub.AsyncInferenceClient) 对象。

```py
# Run text_generation task:
>>> endpoint.client.text_generation("I am")
' not a fan of the idea of a "big-budget" movie. I think it\'s a'

# Or in an asyncio context:
>>> await endpoint.async_client.text_generation("I am")
```

如果推理端点未运行，则会引发 [InferenceEndpointError](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpointError) 异常：

```py
>>> endpoint.client
huggingface_hub._inference_endpoints.InferenceEndpointError: Cannot create a client for this Inference Endpoint as it is not yet deployed. Please wait for the Inference Endpoint to be deployed using `endpoint.wait()` and try again.
```

有关如何使用 [InferenceClient](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_client#huggingface_hub.InferenceClient) 的更多详细信息，请参阅 [Inference guide](../guides/inference)。

## 管理生命周期

现在我们已经了解了如何创建推理端点并在其上运行推理，接下来看看如何管理其生命周期。

> [!TIP]
> 在本节中，我们将介绍诸如 [pause()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.pause)、[resume()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.resume)、[scale_to_zero()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.scale_to_zero)、[update()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.update) 和 [delete()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.delete) 等方法。这些方法都是为了方便起见而添加到 [InferenceEndpoint](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint) 中的别名。如果您愿意，也可以使用在 `HfApi` 中定义的通用方法：[pause_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.pause_inference_endpoint)、[resume_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.resume_inference_endpoint)、[scale_to_zero_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.scale_to_zero_inference_endpoint)、[update_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.update_inference_endpoint) 以及 [delete_inference_endpoint()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.delete_inference_endpoint)。

### 暂停或缩容至零

To reduce costs when your Inference Endpoint is not in use, you can choose to either pause it using [pause()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.pause) or scale it to zero using [scale_to_zero()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.scale_to_zero).

> [!TIP]
> 处于*暂停*或*缩容至零*状态的推理端点不会产生任何费用。这两者的区别在于，*暂停*的端点需要通过[resume()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.resume)显式地*恢复*。相反，*缩容至零*的端点在收到推理调用时会自动启动，但会产生额外的冷启动延迟。此外，还可以配置推理端点，使其在一段时间不活动后自动缩容至零。

```py
# Pause and resume endpoint
>>> endpoint.pause()
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='paused', url=None)
>>> endpoint.resume()
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='pending', url=None)
>>> endpoint.wait().client.text_generation(...)
...

# Scale to zero
>>> endpoint.scale_to_zero()
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2', status='scaledToZero', url='https://jpj7k2q4j805b727.us-east-1.aws.endpoints.huggingface.cloud')
# Endpoint is not 'running' but still has a URL and will restart on first call.
```

或通过 CLI：

```bash
hf endpoints pause my-endpoint-name
hf endpoints resume my-endpoint-name
hf endpoints scale-to-zero my-endpoint-name
```

### 更新模型或硬件要求

在某些情况下，您可能希望在不创建新端点的情况下更新您的 Inference Endpoint。您可以更新托管的模型或运行该模型所需的硬件配置。您可以使用 [update()](/docs/huggingface_hub/v2.4.0/zh/package_reference/inference_endpoints#huggingface_hub.InferenceEndpoint.update) 来实现：

```py
# Change target model
>>> endpoint.update(repository="gpt2-large")
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2-large', status='pending', url=None)

# Update number of replicas
>>> endpoint.update(min_replica=2, max_replica=6)
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2-large', status='pending', url=None)

# Update to larger instance
>>> endpoint.update(accelerator="cpu", instance_size="x4", instance_type="intel-icl")
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2-large', status='pending', url=None)

# Update the container arguments, e.g. engine flags on an endpoint running vLLM or SGLang.
# Replaces the current value, it is not appended.
>>> endpoint.update(container_args=["--enable-auto-tool-choice", "--tool-call-parser", "lfm2"])
InferenceEndpoint(name='my-endpoint-name', namespace='Wauplin', repository='gpt2-large', status='pending', url=None)
```

或通过 CLI：

```bash
hf endpoints update my-endpoint-name --repo gpt2-large
hf endpoints update my-endpoint-name --min-replica 2 --max-replica 6
hf endpoints update my-endpoint-name --accelerator cpu --instance-size x4 --instance-type intel-icl
hf endpoints update my-endpoint-name --container-args "--enable-auto-tool-choice --tool-call-parser lfm2"
# Merged into the image currently configured on the endpoint.
hf endpoints update my-endpoint-name --tensor-parallel-size 8
# Or replace the image entirely, in which case pass back the settings you want to keep.
hf endpoints update my-endpoint-name --engine vllm --custom-image vllm/vllm-openai:v0.23.0 --port 8000
```

### 删除端点

最后，如果您不再使用 Inference Endpoint，可以直接调用 `~InferenceEndpoint.delete()`。

> [!WARNING]
> 这是一个不可撤销的操作，将完全删除该端点，包括其配置、日志和使用指标。您无法恢复已删除的 Inference Endpoint。

## 端到端示例

Inference Endpoints 的一个典型用例是批量处理作业，以限制基础设施成本。您可以使用本指南中介绍的方法来自动化此流程：

```py
>>> import asyncio
>>> from huggingface_hub import create_inference_endpoint

# Start endpoint + wait until initialized
>>> endpoint = create_inference_endpoint(name="batch-endpoint",...).wait()

# Run inference
>>> client = endpoint.client
>>> results = [client.text_generation(...) for job in jobs]

# Or with asyncio
>>> async_client = endpoint.async_client
>>> results = await asyncio.gather(*[async_client.text_generation(...) for job in jobs])

# Pause endpoint
>>> endpoint.pause()
```

或者，如果您的推理端点已经存在且处于暂停状态：

```py
>>> import asyncio
>>> from huggingface_hub import get_inference_endpoint

# Get endpoint + wait until initialized
>>> endpoint = get_inference_endpoint("batch-endpoint").resume().wait()

# Run inference
>>> async_client = endpoint.async_client
>>> results = await asyncio.gather(*[async_client.text_generation(...) for job in jobs])

# Pause endpoint
>>> endpoint.pause()
```

