
# 迁移评估
推理迁移包括模型迁移、业务迁移、精度性能调优等环节，是否能满足最终的迁移效果需要进行系统的评估。如果您仅需要了解迁移过程，可以先按照本文档的指导进行操作并熟悉迁移流程。如果您有实际的项目需要迁移，建议填写下方的推理业务迁移评估表，并将该调研表提供给华为云技术支持人员进行迁移评估，以确保迁移项目能顺利实施。
通用的推理业务及LLM推理可提供下表进行业务迁移评估：
表1通用的推理业务及LLM推理业务迁移评估表 
| 收集项                    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 实际情况（请填写） |
|:---|:---|:---|
| 项目名称                   | 项目名称，例如：XXX项目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | -         |
| 使用场景                   | 例如： - 使用YOLOv5算法对工地的视频流裁帧后进行安全帽检测。  - 使用BertBase算法对用户在app上购买商品后的评论进行理解。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | -         |
| CPU架构                  | X86/ARM，自有软件是否支持ARM。 例如：4个推理模型在ARM上运行，6个推理模型在X86上运行。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | -         |
| 当前使用的操作系统及版本           | 当前推理业务的操作系统及版本，如：Ubuntu 22.04。 是否使用容器化运行业务，以及容器中OS版本，HostOS中是否有业务软件以及HostOS的类型和版本。 需要评估是否愿意迁移到华为云的通用OS。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | -         |
| AI引擎及版本                | 当前引擎（TF/PT/LibTorch），是否接受切换MindSpore。 例如：当前使用TF 2.6，PyTorch 1.10，可以接受切换MindSpore。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | -         |
| 业务编程语言、框架、版本。          | C++/Python/JAVA等。 例如：业务逻辑使用JAVA，推理服务模块使用C++自定义实现推理框架，Python 3.7等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | -         |
| CPU使用率                 | 业务中是否有大量使用CPU的代码，以及日常运行过程中CPU的占用率（占用多少个核心），以及使用CPU计算的业务功能说明和并发机制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | -         |
| 是否有Linux内核驱动           | 是否有业务相关的Linux内核驱动代码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | -         |
| 依赖第三方组件列表              | 当前业务依赖的第三方软件列表（自行编译的第三方软件列表）。 例如：Faiss等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | -         |
| 推理框架                   | TensorRT/Triton/MSLite等。 例如： - 2个推理模型使用TensorRT框架，5个使用Triton框架。  - 通过stable-diffusion的WebUI提供AIGC推理服务。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | -         |
| GPU卡的类型                | Vnt1/Ant1/Ant03/Tnt004等。 例如： 20卡Ant1，运行Bert Large推理。 10卡Tnt004运行YOLOv5。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | -         |
| Backbone类型             | ResNet/DarkNet/Transformer等。 例如： - 5个模型使用ResNet Backbone，应用与监控。  - 3个模型使用Transformer，应用于自然语言处理xxx。  - 使用stable-diffusion的典型模型：TextEncoder、VaeEncoder、unet、VaeDecoder、SafetyChecker，没有使用LoRA等动态加载的诉求。                                                                                                                                                                                                                                                                                                                | -         |
| 模型训练方式                 | 关于推理业务中使用的模型，填写该模型训练时使用的框架以及套件。 例如：模型使用PyTorch+Megatron+DeepSpeed进行训练。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | -         |
| 自定义算子                  | 是否有自定义算子，CPU还是CUDA，复杂程度。 例如：有5个CUDA自定义算子。1个高复杂度算子，基于C++开发2000行代码。4个中等复杂度算子，基于C++开发，平均每个自定义算子约500行代码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | -         |
| 动态shape                | 是否需要支持动态shape。 例如：需要动态Shape，需要动态Shape的模型有ResNet-50、YOLOv5。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | -         |
| 参数类型（FP32/FP16）        | FP32还是FP16混合，判断精度调优难度。 例如：ResNet-50、YOLOv5模型使用FP16。BertLarge使用FP32。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | -         |
| 模型变更频率                 | 模型变更场景如下： - 数据增量，模型算子未变更。  - 数据增量，模型算子变化，例如： - 网络结构变化。  - AI框架版本升级，使用了新版本算子。     例如：每半年对模型进行一次变更，变更的内容包含模型结构，并升级AI框架。                                                                                                                                                                                                                                                                                         | -         |
| 是否使用华为MDC产品            | 如果使用华为MDC产品，请填写MDC版本号，如果没有可以不填。 例如：使用了C83版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | -         |
| 性能指标与预期                | - 例1： 模型：YOLOv5 运行环境：Vnt1 单卡 性能指标：QPS 100/s （两进程） 性能约束：单次请求最大可以接受时延需小于100ms 性能预期：QPS 130/s   - 例2： 模型：OCR 运行环境：6348（单核48U超线程） 性能指标：QPS 10/s（四进程） 性能约束：单次请求最大可以接受时延需小于1s 性能预期：QPS 20/s    | -         |
| 业务访问方式                 | 推理业务访问："客户端 -\> 云服务" 或 "云客户端 -\> 云服务"。 推理业务时延要求，客户端到云服务端到端可接受时延。 例如：当前是"客户端 -\> 云服务"模式，客户端请求应答可接受的最长时延为2秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -         |
| 模型参数规模，是否涉及分布式推理       | 10B/100B，单机多卡推理。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | -         |
| 能否提供实际模型、网络验证的代码和数据等信息 | 提供实际模型、网络验证的代码和数据。 提供与业务类型类似的开源模型，例如GPT3 10B/13B。 提供测试模型以及对应的Demo代码路径（开源或共享）。 可以提前完成POC评估，例如框架、算子支持度，以及可能的一些性能指标。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | -         |
   
如果是AIGC场景的业务例如Stable Diffusion，请在上表的基础上，再提供以下信息：
表2AIGC场景业务迁移评估表 
| 收集项                | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 实际情况（请填写） |
|:---|:---|:---|
| 使用场景               | 例如： 1. 业务是文生图，图生图等。  2. 业务是否需要频繁更新模型，或者需要动态加载Lora。                                                                                                                                                                                                                                                                                                                      | -         |
| stable-diffusion套件 | 1. 使用diffusers （https://github.com/huggingface/diffusers）。  2. stable-diffusion-webui （https://github.com/AUTOMATIC1111/stable-diffusion-webui）。  3. 如果是基于其他开源，需要附带开源代码仓地址。                                                                                                                                  | -         |
| 具体使用库              | 例如： 1. 使用了哪个pipeline （例如lpw_stable_diffusion.py）。  2. 使用了哪个huggingface的模型 （例如digiplay/majicMIX_realistic_v6）。  3. 如果有预处理，后处理，对应的模型是什么（例如后处理的超分模型）。                                                                                                         | -         |
| Lora/TextInversion | 1. 是否有动态加载Lora的需求，可否接受把Lora固定到模型内。  2. 是否使用了TextInversion，是否需要动态加载。                                                                                                                                                                                                                                                                                                                                              | -         |
| 动态shape            | 是否可接受分档shape（固定n个档位的shape）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -         |
| 模型变更频率             | 模型变更场景如下： 1. 数据增量，模型算子未变更。  2. 数据增量，模型算子变化，例如： - 网络结构变化。  - AI框架版本升级，使用了新版本算子。     例如：每半年对模型进行一次变更，变更的内容包含模型结构，并升级AI框架。 | -         |
| 尺寸要求               | 超分前产生的图片尺寸要求： 1. 512\*512  2. 720\*720  3. 1080 \*1080  4. 1920\*1920 （shape过大可能导致性能下降）                                                                                   | -         |
   
