L'outil de réglage automatique AOE permet à votre modèle de fonctionner efficacement sur la plate-forme Ascend

Résumé : Lorsque les performances de l'opérateur ou du réseau sont médiocres, AOE peut être utilisé pour le réglage. Cet article vous amènera à comprendre l'outil de réglage automatique AOE, afin que votre modèle puisse fonctionner efficacement sur la plate-forme Ascend.

Cet article est partagé par Huawei Cloud Community " Outil de réglage automatique AOE, laissez votre modèle fonctionner efficacement sur la plate-forme Shengteng ", auteur : Shengteng CANN.

Que sont les AOE ?

AOE (Ascend Optimization Engine) est un outil de réglage automatique conçu pour exploiter pleinement les ressources matérielles limitées et répondre aux exigences de performance des opérateurs et de l'ensemble du réseau.

AOE effectue une itération continue à travers le mécanisme de rétroaction en boucle fermée de génération de stratégies de réglage, de compilation et de vérification dans l'environnement d'exploitation, et obtient finalement la meilleure stratégie de réglage, afin d'utiliser pleinement les ressources matérielles et d'améliorer les performances du réseau.

La structure d'AOE est la suivante.

Couche application : entrée de réglage, le support est le suivant.

  • AOE : AOE signifie ici le processus AOE, qui est l'entrée de réglage pour les scénarios d'inférence hors ligne.
  • TFAdapter (adaptateur TensorFlow) : l'entrée de réglage pour les scénarios d'entraînement TensorFlow.
  • PyTorchAdapter (Adaptateur PyTorch) : L'entrée de réglage pour les scénarios de formation PyTorch.

Couche de réglage : mode de réglage, prend en charge les types suivants.

  • SGAT (SubGraph Auto Tuning) : réglage des sous-graphes. Un réseau complet sera divisé en plusieurs sous-graphes. Pour chaque sous-graphe, différentes stratégies de réglage sont générées par SGAT. L'algorithme de réglage de SGAT trouve la stratégie de réglage optimale en obtenant les données de performance de la stratégie de réglage de chaque itération, de manière à obtenir les performances optimales du sous-graphe correspondant.
  • OPAT (Operator Auto Tuning) : réglage de l'opérateur. AOE entre une image entière dans OPAT, et OPAT effectue la fusion d'opérateurs, divise l'image fusionnée en granularité d'opérateur et génère différentes stratégies d'optimisation d'opérateur pour chaque sous-graphe d'opérateur fusionné, afin d'obtenir des performances optimales de l'opérateur.
  • GDAT (Gradient Auto Tuning) : réglage du gradient. Dans le scénario de formation distribuée, GDAT maximise le parallélisme du calcul inverse et de la communication d'agrégation de gradient, raccourcit le temps de queue de communication et améliore les performances de la formation de cluster.

Couche d'exécution : C'est la couche d'exécution, qui prend en charge la compilation (Compiler) et l'exécution sur l'environnement d'exécution (Runner).

Comment fonctionne AOE

Ce qui suit utilise le réglage de l'opérateur comme exemple pour introduire le principe de fonctionnement d'AOE.

1. Importez le modèle de framework open source d'origine dans GE et FE pour la préparation du graphique (InferShape, sélection de l'opérateur, etc.) et la division des sous-graphiques.

2. Entrez dans l'étape de compilation de l'opérateur et faites correspondre la base de connaissances en fonction des informations de sous-graphe divisé.

S'il peut être mis en correspondance avec la base de connaissances :

- Dans le scénario où REPEAT_TUNE n'est pas activé, utilisez directement la stratégie de réglage dans la base de connaissances existante pour compiler l'opérateur.

- Allumez la scène de REPEAT_TUNE et ajustez-la via AOE.

Si le résultat réglé est meilleur que la base de connaissances existante, le résultat réglé sera stocké dans la base de connaissances définie par l'utilisateur et l'opérateur sera compilé à l'aide de la stratégie de réglage dans la base de connaissances personnalisée.

Si le résultat du réglage n'est pas meilleur que la base de connaissances existante, aucune base de connaissances définie par l'utilisateur ne sera générée et la base de connaissances existante sera utilisée pour compiler directement les opérateurs.

S'il ne correspond pas à la base de connaissances, il sera réglé via AOE.

- Si le résultat réglé est meilleur que les performances de la stratégie de réglage par défaut, le résultat réglé sera écrit dans la base de connaissances personnalisée et l'opérateur sera compilé à l'aide de la stratégie de réglage dans la base de connaissances personnalisée.

- Si le résultat du réglage n'est pas meilleur que les performances de la stratégie de réglage par défaut, aucune base de connaissances personnalisée n'est générée et la stratégie de réglage par défaut est utilisée pour compiler l'opérateur.

3. Dans le scénario d'inférence, une fois la compilation terminée, un fichier de modèle hors ligne adapté au processeur Ascend AI est généré. Dans le scénario de formation, une fois la compilation terminée, un fichier de modèle de réseau formé est généré.

Scénarios d'utilisation AOE

Lorsque les performances de l'opérateur ou les performances du réseau sont médiocres, AOE peut être utilisé pour le réglage. Les scénarios pris en charge par le réglage AOE sont les suivants :

  • raisonnement hors ligne
  • Formation TensorFlow
  • Formation PyTorch
  • raisonnement en ligne
  • Composition IR

Comment utiliser AOE pour le réglage ?

Ce qui suit utilise l'optimisation de l'opérateur du réseau Caffe dans le scénario d'inférence hors ligne comme exemple pour présenter comment effectuer l'optimisation AOE.

1. Préparez le fichier modèle.

2. Configurez les variables d'environnement.

Variable d'environnement obligatoire

- Le package CANN fournit un script de réglage de variable d'environnement au niveau du processus auquel les utilisateurs peuvent se référer dans le processus pour compléter automatiquement le réglage de la variable d'environnement. Exécutez la commande pour référence comme suit. Les exemples suivants sont les chemins d'installation par défaut pour les utilisateurs root ou non root. Veuillez vous référer au chemin d'installation réel.

# 以root用户安装toolkit包
/usr/local/Ascend/ascend-toolkit/set_env.sh 
# 以非root用户安装toolkit包
${HOME}/Ascend/ascend-toolkit/set_env.sh

- L'outil AOE dépend de Python. En prenant Python3.7.5 comme exemple, veuillez exécuter les commandes suivantes en tant qu'utilisateur courant pour définir les variables d'environnement pertinentes de Python3.7.5.

#用于设置python3.7.5库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
#如果用户环境存在多个python3版本,则指定使用python3.7.5版本
export PATH=/usr/local/python3.7.5/bin:$PATH

variables d'environnement facultatives

export ASCEND_DEVICE_ID=1
export TUNE_BANK_PATH=/home/HwHiAiUser/custom_tune_bank
export TE_PARALLEL_COMPILER=7
export REPEAT_TUNE=True
命令中的参数含义如下。
  • ASCEND_DEVICE_ID : ID logique du processeur Ascend AI.
  • TUNE_BANK_PATH : chemin de stockage de la base de connaissances personnalisée après le réglage.
  • TE_PARALLEL_COMPILER : active la fonction de compilation parallèle de l'opérateur.
  • REPEAT_TUNE : s'il faut réinitialiser le réglage.

3. Pour effectuer le réglage AOE, la commande est la suivante. Les répertoires et fichiers utilisés dans les commandes sont des exemples, veuillez vous référer à la situation réelle.

aoe --framework=0 --model=$HOME/module/resnet50.prototxt --weight=$HOME/module/resnet50.caffemodel --job_type=2

La signification des paramètres de la commande est la suivante.

  • framework : le type de framework du modèle de réseau d'origine. 0 signifie Café.
  • model : chemin et nom du fichier du modèle d'origine.
  • weight : le chemin et le nom du fichier de poids du modèle d'origine.
  • job_type : mode de réglage, 2 signifie réglage de l'opérateur.

4. Si les informations suivantes s'affichent, cela signifie que le réglage AOE est terminé.

Aoe process finished

Une fois le réglage terminé, les fichiers générés sont les suivants.

- Base de connaissances personnalisée : Si les conditions de génération d'une base de connaissances personnalisée sont remplies, une base de connaissances personnalisée sera générée.

- om fichier modèle, le chemin de stockage est :

${WORK_PATH}/aoe_workspace/${model_name}_${timestamp}/tunespace/result/${model_name}_${timestamp}_tune.om
${WORK_PATH}:调优工作目录
${model_name}:模型名称
${timestamp}:时间戳

- Fichier de résultat de réglage de l'opérateur : un fichier nommé "aoe_result_opat_{timestamp}_{pid xxx }.json" est généré en temps réel dans le répertoire de travail où le réglage est effectué et enregistre les informations de l'opérateur réglé pendant le réglage. Les exemples sont les suivants.

"basic": {
 "tuning_name": "调优任务名",
 "tuning_time(s)": 1827
 }
 "OPAT": {
 "model_baseline_performance(ms)": 113.588725,
 "model_performance_improvement": "0.31%",
 "model_result_performance(ms)": 113.236731,
 "opat_tuning_result": "tuning successful",
 "repo_modified_operators": {
 "add_repo_operators": [
 {
 "op_name": "strided_slice_10",
 "op_type": "stridedsliced",
       ……
 "repo_summary": {
 "repo_add_num": 2,
 "repo_hit_num": 17,
 "repo_reserved_num": 15,
 "repo_unsatisfied_num": 0,
 "repo_update_num": 2,
 "total_num": 19
 }

5. Une fois le réglage terminé, utilisez la base de connaissances personnalisée réglée pour re-raisonner afin de vérifier si les performances sont améliorées.

Ce qui précède est une brève introduction à AOE. Pour plus de contenu, vous pouvez le consulter dans le centre de documentation de Shengteng , et vous pouvez également étudier des cours vidéo dans la section " Cours en ligne de la communauté Shengteng ". Si vous avez des questions pendant le processus d'apprentissage, vous pouvez interagir et communiquer dans le " Shengteng Forum "!

 

Cliquez pour suivre et en savoir plus sur les nouvelles technologies de Huawei Cloud pour la première fois ~

{{o.name}}
{{m.name}}

Je suppose que tu aimes

Origine my.oschina.net/u/4526289/blog/8591133
conseillé
Classement