# image-classification-transformers ## 天数智芯 天垓100 视觉分类 transformers框架支持多种图像分类模型,现对天垓100加速卡进行transformers框架的适配并且带入到信创算力测试框架中。将视觉分类模型放在天数卡(天垓100)上运行且测试性能,注意该测试框架下的模型需适配transformers库。 ## Quick Start 1、首先从 modelscope上下载视觉分类的模型,例如 microsoft/beit-base-patch16-224 ```python modelscope download --model microsoft/beit-base-patch16-224 README.md --local_dir /mnt/contest_ceph/zhoushasha/models/microsoft/beit_base_patch16_224_pt22k_ft22k ``` 2、使用Dockerfile生成镜像 从仓库的【软件包】栏目下载基础镜像 bi100-3.2.1-x86-ubuntu20.04-py3.10-poc-llm-infer:v1.2.2 使用 Dockerfile_bi100 生成 镜像,例如 bi100-3.2.1-x86-ubuntu20.04-py3.10-poc-llm-infer:test 注意 Dockerfile_bi100 中已预先将模型 microsoft_beit_base_patch16_224_pt22k_ft22k 放在了 /model 下面 3、启动docker ```python docker run -it --rm \ -p 10086:80 \ --name test_zss \ -v /mnt/contest_ceph/zhoushasha/models/image_models/microsoft_beit_base_patch16_224_pt22k_ft22k:/model:rw \ --privileged bi100-3.2.1-x86-ubuntu20.04-py3.10-poc-llm-infer:test ``` 其中/mnt/contest_ceph/zhoushasha/models/image_models/microsoft_beit_base_patch16_224_pt22k_ft22k为你存放的模型文件的实际地址 4、测试服务 ```python curl -X POST http://localhost:10086/v1/private/s782b4996 \ > -F "image=@/home/zhoushasha/models/026_0010.jpg" ``` ## 视觉分类模型测试服务原理 使用Hugging Face transformers库中的工具类AutoImageProcessor 和AutoModelForImageClassification AutoImageProcessor用于自动加载与预训练模型配套的图像处理器。与预训练模型绑定,通过from_pretrained(model_path)加载时,会自动读取模型训练时使用的预处理配置(如尺寸、归一化参数等),负责图像预处理(如尺寸调整、归一化等)。 AutoModelForImageClassification是一个 “自动模型类”,会根据预训练模型的类型(如 ViT、ResNet 等)自动加载对应的网络结构。AutoModelForImageClassification.from_pretrained(model_path)从model_path加载预训练的图像分类模型,必须接收AutoImageProcessor处理后的张量作为输入。 AutoModelForImageClassification,执行图像分类的核心计算,输入预处理后的张量,输出分类结果(如类别概率)。 ## 如何使用 视觉分类 模型测试框架 代码实现了一个接收图像并返回概率最高的类别作为最终分类结果的视觉分类 HTTP 服务,并基于 zibo.harbor.iluvatar.com.cn:30000/saas/bi100-3.2.1-x86-ubuntu20.04-py3.10-poc-llm-infer:v1.2.2 基础镜像,将该 HTTP 服务重新打包成 docker 镜像,通过 k8s 集群sut容器去请求这个 HTTP 服务。 该框架 已测试适配的 视觉分类 模型类型有: 1、卷积神经网络(CNN)类:ResNet 2、Transformer 类:ViT(Vision Transformer)、Swin Transformer、DeiT(Data-efficient Image Transformers)、BEiT(BERT Pre-training of Image Transformers) 3、 轻量级模型:MobileNet 系列 4、其他特殊设计:ConvNeXt ## 天垓100视觉分类模型适配情况 | 模型地址 | 类型 | 适配状态 | 天垓100准确率 | 天垓100吞吐量(张/秒) | cpu准确率 | cpu吞吐量(4C)(张/秒) | Submit Id | | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | | https://www.modelscope.cn/models/apple/mobilevit-x-small | MobileViT | 成功 | 22.6667% | 31.6415 | 22.6667% | 2.6574 | 249973 | | https://www.modelscope.cn/models/facebook/convnextv2-tiny-22k-384 | ConvNeXt V2(ConvNeXt 模型的改进版本) | 成功 | 29.3333% | 25.1330 | 29.3333% | 0.7301 | 249985 | | https://www.modelscope.cn/models/google/vit-base-patch16-224 | ViT(Vision Transformer) | 成功 | 29.3333% | 40.0226 | 29.3333% | 1.1306 | 249992 | | https://www.modelscope.cn/models/microsoft/beit-base-patch16-224-pt22k-ft22k | BEiT(BERT Pre-training of Image Transformers) | 成功 | 34.0000% | 23.7485 | 34.0000% | 0.9773 | 249537 | | https://www.modelscope.cn/models/microsoft/swinv2-tiny-patch4-window16-256 | Swin Transformer V2(基于Swin Transformer) | 成功 | 29.3333% | 13.8379 | 29.3333% | 1.0331 | 249557 | | https://www.modelscope.cn/models/facebook/deit-small-patch16-224 | DeiT(Data-efficient Image Transformer)由 Facebook AI 提出 | 成功 | 29.3333% | 40.5675 | 29.3333% | 3.2749 | 250034 | | https://www.modelscope.cn/models/microsoft/dit-base-finetuned-rvlcdip | DiT(Document Image Transformer) | 成功 | 0.0000% | 35.5122 | 0.0000% | 1.0823 | 250035 | | https://www.modelscope.cn/models/microsoft/cvt-13 | CvT(Convolutional Vision Transformer) | 成功 | 29.3333% | 27.1214 | 29.3333% | 1.7240 | 250039 | | https://www.modelscope.cn/models/google/efficientnet-b7 | EfficientNet 架构(基于卷积神经网络CNN) | 成功 | 28.6667% | 10.0449 | 28.6667% | 0.1541 | 250042 | | https://www.modelscope.cn/models/microsoft/resnet-18 | ResNet(Residual Network) | 成功 | 22.6667% | 43.5976 | 22.6667% | 7.3915 | 250047 |