Ryzen 推理管道
在 管道 是一个使用模型进行推理的简单易用方法。这些管道是抽象了库中大多数复杂代码的对象,提供了一个专门用于多个任务的简单 API。
当前支持的任务是
图像分类
物体检测
(支持的模型类型 - yolox、yolov3、yolov5、yolov8)图像分割
(支持的模型类型 - hrnet、semantic_fpn)
管道抽象
管道抽象是针对特定任务的所有可用管道的包装器。pipeline() 函数会自动加载一个能够执行您任务推理的默认模型和分词器/特征提取器。
- 通过指定推理任务开始创建管道
>>> from optimum.amd.ryzenai import pipeline
>>> detector = pipeline("object-detection")
- 将您的输入文本/图像传递给
~pipelines.pipeline
函数
>>> import requests
>>> from PIL import Image
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> detector(image)
[ { 'box': {'xmax': 325, 'xmin': 2, 'ymax': 465, 'ymin': 50},
'label': 15.0,
'score': 0.7081549763679504},
{ 'box': {'xmax': 630, 'xmin': 347, 'ymax': 381, 'ymin': 16},
'label': 15.0,
'score': 0.6494212746620178},
{ 'box': {'xmax': 369, 'xmin': 335, 'ymax': 187, 'ymin': 76},
'label': 65.0,
'score': 0.6064183115959167},
{ 'box': {'xmax': 645, 'xmin': 2, 'ymax': 475, 'ymin': 4},
'label': 57.0,
'score': 0.599224865436554},
{ 'box': {'xmax': 174, 'xmin': 40, 'ymax': 116, 'ymin': 73},
'label': 65.0,
'score': 0.408765971660614}]
使用 Hugging Face Hub 上的 RyzenAI 模型进行推理
在 pipeline() 函数可以从 Hugging Face Hub 加载 Ryzen AI 支持的模型。选择合适的模型后,您可以通过指定模型存储库创建 pipeline()。
>>> import requests
>>> from PIL import Image
>>> from optimum.amd.ryzenai import pipeline
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> # Hugging Face hub model-id with the quantized ONNX model
>>> model_id = "mohitsha/timm-resnet18-onnx-quantized-ryzen"
>>> pipe = pipeline("image-classification", model=model_id)
>>> print(pipe(image))
使用 RyzenModelForXXX 类
也可以使用 RyzenModelForXXX
类加载模型。例如,以下是如何加载 ~ryzenai.RyzenModelForImageClassification
类以进行图像分类
>>> import requests
>>> from PIL import Image
>>> from optimum.amd.ryzenai import RyzenAIModelForImageClassification
>>> from optimum.amd.ryzenai import pipeline
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> # Hugging Face hub model-id with the quantized ONNX model
>>> model_id = "mohitsha/timm-resnet18-onnx-quantized-ryzen"
>>> model = RyzenAIModelForImageClassification.from_pretrained(model_id)
>>> pipe = pipeline("image-classification", model=model)
>>> print(pipe(image))
使用 model_type 参数
对于某些模型,除了 model_id 之外,还需要提供 model_type
和/或 image_preprocessor
来进行推理。例如,以下是如何使用 yolox
进行推理
>>> import requests
>>> from PIL import Image
>>> from optimum.amd.ryzenai import pipeline
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> model_id = "amd/yolox-s"
>>> pipe = pipeline("object-detection", model=model_id, model_type="yolox")
>>> print(pipe(image))