[v1.28.0] Hardware discovery and managed engine images for Inference Endpoints and more
Latest🔎 Discover deployable hardware with hf endpoints hardware
Deploying an Inference Endpoint requires five hardware flags (--vendor, --region, --accelerator, --instance-type, --instance-size) whose valid values depend on each other, and until now there was no way to learn them from the CLI. The new hf endpoints hardware command lists the valid combinations along with the price per replica per hour and your namespace's accelerator quota, filtered by default to the hardware you can deploy on right now. The same data is available in the SDK via list_inference_endpoints_hardware(), which flattens the API response into InferenceEndpointHardware objects you can filter programmatically.
>>> hf endpoints hardware --vendor aws --region eu-west-1
VENDOR REGION ACCELERATOR INSTANCE_TYPE INSTANCE_SIZE MEMORY_GB GPU_MEMORY_GB PRICE_PER_HOUR QUOTA STATUS
------ --------- ----------- ------------- ------------- --------- ------------- -------------- ----- ---------
aws eu-west-1 cpu intel-spr x1 2.0 0.033 0/60 available
aws eu-west-1 cpu intel-spr x2 4.0 0.067 0/60 available
aws eu-west-1 gpu nvidia-a10g x1 30.0 24 1.0 0/16 available
aws eu-west-1 gpu nvidia-t4 x1 15.0 16 0.5 1/30 available- [Inference Endpoints] Add
hf endpoints hardwareto list available instances by @hanouticelina in #4672
🚀 Managed engine images and multi-accelerator parallelism for Inference Endpoints
custom_image now accepts the engine-specific container types supported by the API: key the dictionary with the engine name (vLLM, sGLang, tgi, tei, llamacpp, hfServe, ...) instead of leaving it flat, and each engine takes the usual container fields plus its own tuning options. Any dict without a top-level url is forwarded to the API untouched, so engines added to the API later will work without upgrading huggingface_hub, and update_inference_endpoint now handles the same payload shapes as create_inference_endpoint. On the CLI, hf endpoints deploy and hf endpoints update gain --engine, --tensor-parallel-size and --data-parallel-size, and update also accepts --custom-image, --health-route and --port. This matters because vLLM and SGLang default to a single accelerator while an endpoint is allocated every accelerator of its instance — the API now rejects that misconfiguration, and these flags are how you set things right.
$ 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
# Retune a running endpoint
$ hf endpoints update gpt-oss-120b-vllm --tensor-parallel-size 4 --data-parallel-size 2💔 Breaking change: huggingface_hub.constants.INFERENCE_ENDPOINT_IMAGE_KEYS is removed. It was never exported at the package root nor documented, but code reading it directly will now get an AttributeError.
- [Inference Endpoints] Support managed engine images in
custom_imageby @hanouticelina in #4671 - [CLI] Add --tensor-parallel-size / --data-parallel-size to
hf endpoints deployandupdateby @moon-bot-app[bot] in #4661
🤖 Inference
- [Inference Providers] deepinfra: add text-to-speech support by @ovuruska in #4559
- [Inference Providers] deepinfra: add feature-extraction support by @ovuruska in #4656
🖥️ CLI
- [CLI] Keep
hf extensionsoff the metered GitHub REST API by @hanouticelina in #4659
🐛 Bug and typo fixes
- [CLI] Fix scheduled upload of a single file in a subfolder by @dfedoryshchev in #4619
- [Download] Fix tqdm_class ignored by the Xet transfer bar by @bharadwaj-pendyala in #4647
- [CLI] Fix duplicated GPU rows in hf jobs stats by @dfedoryshchev in #4660
- Don't report a 429 as a window rate limit when the window isn't exhausted by @moon-bot-app[bot] in #4662
- [Download] Fix ResolvedRevision string value after pickle/copy by @hanouticelina in #4692
- Do not use a redirect's Content-Length as file size in get_hf_file_metadata by @assafvayner in #4699
- [Inference Endpoints] Omit
model.taskinstead of sending null on create by @hanouticelina in #4701
📖 Documentation
- Fix import path in parse_hf_mount doc example by @davidpavlovschi in #4621
- Improve wording in cache limitations documentation by @aaravxsingh15 in #4622
- [Docs] Normalize malformed docstring parameter entries by @4ktLuffy in #4623
- [Docs] Remove obsolete Repository API from German guides by @OllieinCanada in #4679
🏗️ Internal
- Post-release: bump version to 1.28.0.dev0 by @huggingface-hub-bot[bot] in #4643
- Bump the actions group with 4 updates by @dependabot[bot] in #4652