Optimum 文档
AMD 锐龙 AI
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
AMD 锐龙 AI
锐龙 AI 支持正在进行中,并将在未来几个月内得到极大的改进和扩展。
AMD 的 Ryzen™ AI 系列笔记本电脑处理器为用户提供集成的神经处理单元 (NPU),可将主机 CPU 和 GPU 从 AI 处理任务中解放出来。Ryzen™ AI 软件包括用于 ONNX Runtime 的 Vitis™ AI 执行提供程序 (EP),以及量化工具和预优化模型库。所有这一切都基于 Ryzen™ AI 技术,该技术构建于 AMD XDNA™ 架构之上,专为高效且本地运行 AI 工作负载而构建,为开发人员创新下一代突破性 AI 应用程序提供了诸多优势。
Optimum-AMD 提供了在锐龙 AI 加速器上加载和推理 Hugging Face 模型的简易接口。
安装
锐龙 AI 环境设置
需要启用锐龙 AI 环境才能使用此库。请参阅锐龙 AI 的安装和运行时设置。
注意:RyzenAI 模型需要运行时配置文件。此运行时配置文件的默认版本可以在 Ryzen AI VOE 包中找到,在安装期间以名称 vaip_config.json
提取。有关更多信息,请参阅runtime-configuration-file
如果未提供运行时配置文件,则库将使用 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 pipelines 不兼容。
🤗 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 pipelines 不兼容。
🤗 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 上更新