Optimum 文件
AMD Ryzen AI
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
AMD Ryzen AI
Ryzen AI 支援正在開發中,未來幾個月將得到大幅改進和擴充套件。
AMD 的 Ryzen™ AI 系列筆記本處理器為使用者提供了整合神經網路處理單元(NPU),可將 AI 處理任務從主機 CPU 和 GPU 上分載。Ryzen™ AI 軟體包含適用於 ONNX Runtime 的 Vitis™ AI 執行提供程式(EP),以及量化工具和預最佳化模型庫。所有這些都基於 AMD XDNA™ 架構上的 Ryzen™ AI 技術實現,該架構專為高效地本地執行 AI 工作負載而設計,為創新下一代突破性 AI 應用程式的開發者提供了諸多優勢。
Optimum-AMD 為在 Ryzen AI 加速器上載入和推理 Hugging Face 模型提供了便捷的介面。
安裝
Ryzen AI 環境設定
需要啟用 Ryzen AI 環境才能使用此庫。請參閱 Ryzen AI 的安裝和執行時設定。
注意:RyzenAI 模型需要執行時配置檔案。該執行時配置檔案的預設版本可以在 Ryzen AI VOE 包中找到,在安裝過程中會以 `vaip_config.json` 的名稱提取。有關更多資訊,請參閱執行時配置檔案
如果未提供執行時配置檔案,庫將使用 RyzenAIXXX 模型類中定義的配置。有關可用配置,請參閱ryzenai/configs/。
安裝 Optimum-amd
git clone https://github.com/huggingface/optimum-amd.git
cd optimum-amd
pip install -e .[ryzenai]
使用預最佳化模型進行推理
RyzenAI 提供用於影像分類、超解析度、目標檢測等各種任務的預最佳化模型。以下是執行 Resnet 進行影像分類的示例。
>>> from functools import partial
>>> from datasets import load_dataset
>>> from optimum.amd.ryzenai import RyzenAIModelForImageClassification
>>> from transformers import AutoImageProcessor, pipeline
>>> model_id = "amd/resnet50"
>>> model = RyzenAIModelForImageClassification.from_pretrained(model_id)
>>> processor = AutoImageProcessor.from_pretrained(model_id)
>>> # Load image
>>> dataset = load_dataset("imagenet-1k", split="validation", streaming=True, trust_remote_code=True)
>>> data = next(iter(dataset))
>>> image = data["image"]
>>> cls_pipe = pipeline(
... "image-classification", model=model, image_processor=partial(processor, data_format="channels_last")
... )
>>> outputs = cls_pipe(image)
>>> print(outputs)
Ryzen 預最佳化模型不相容 Transformer 管道進行推理。
🤗 Timm 的最小工作示例
先決條件
- 使用Optimum Exporters匯出模型。
- 使用 RyzenAI 量化工具對 ONNX 模型進行量化。有關量化的更多資訊,請參閱模型量化指南。
使用 Ryzen AI 類載入模型
>>> import requests
>>> from PIL import Image
>>> from optimum.amd.ryzenai import RyzenAIModelForImageClassification
>>> from transformers import PretrainedConfig, pipeline
>>> import timm
>>> import torch
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> # See [quantize.py](https://huggingface.co/mohitsha/timm-resnet18-onnx-quantized-ryzen/blob/main/quantize.py) for more details on quantization.
>>> quantized_model_path = "mohitsha/timm-resnet18-onnx-quantized-ryzen"
>>> model = RyzenAIModelForImageClassification.from_pretrained(quantized_model_path)
>>> config = PretrainedConfig.from_pretrained(quantized_model_path)
>>> # preprocess config
>>> data_config = timm.data.resolve_data_config(pretrained_cfg=config.pretrained_cfg)
>>> transforms = timm.data.create_transform(**data_config, is_training=False)
>>> output = model(transforms(image).unsqueeze(0)).logits # unsqueeze single image into batch of 1
>>> top5_probabilities, top5_class_indices = torch.topk(torch.softmax(output, dim=1) * 100, k=5)
Timm 模型不相容 transformer 管道進行推理。
🤗 Transformers 的最小工作示例
先決條件
- 使用Optimum Exporters匯出模型。
- 使用 RyzenAI 量化工具對 ONNX 模型進行量化。有關量化的更多資訊,請參閱模型量化指南。
使用 Ryzen AI 類載入模型
要載入 transformers 模型並使用 RyzenAI 進行推理,您只需將 `AutoModelForXxx` 類替換為對應的 `RyzenAIModelForXxx` 類即可。
請參閱下面的影像分類示例。
>>> import requests
>>> from PIL import Image
>>> from optimum.amd.ryzenai import RyzenAIModelForImageClassification
>>> from transformers import AutoFeatureExtractor, pipeline
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>>
>>> # See [quantize.py](https://huggingface.co/mohitsha/transformers-resnet18-onnx-quantized-ryzen/blob/main/quantize.py) for more details on quantization.
>>> quantized_model_path = "mohitsha/transformers-resnet18-onnx-quantized-ryzen"
>>> model = RyzenAIModelForImageClassification.from_pretrained(quantized_model_path)
>>> feature_extractor = AutoFeatureExtractor.from_pretrained(quantized_model_path)
>>> cls_pipe = pipeline("image-classification", model=model, feature_extractor=feature_extractor)
>>> outputs = cls_pipe(image)
Optimum-AMD 僅支援 Transformers 中的 ResNet 模型進行推理。
< > 在 GitHub 上更新