-
Notifications
You must be signed in to change notification settings - Fork 0
Atlas 500 PTBR
A arquitetura Ascend não executa os modelos treinados nos frameworks tradicionais, como TensorFlow ou PyTorch. É preciso convertê-los para algo compatível, que é o caso do Da Vinci Offline Model.
Em posse do repositório da YOLOv5 e do modelo treinado (algo como weights.pt), executamos a seguinte linha de comando para obter o modelo no formato .onnx
python yolov5/export.py --weights path/to/weights.pt --batch 1 --include onnx --opset 11 --simplify
Ao fim, se tudo ocorrer corretamente, devemos ter um weights.onnx
. Além disso, note que o opset (11) importa.
CANN é a base de capacidade de computação de hardware dos processadores Ascend e garante a execução de redes neurais profundas através de seus módulos, como Ascend CL, Graph Engine etc.
TODO: paths.
Links
- https://support.huawei.com/enterprise/br/doc/EDOC1100192470/7ebcb1b3/cann
- https://e.huawei.com/br/products/cloud-computing-dc/atlas/cann
ATC é uma ferramenta usada para converter modelos de código-aberto para modelos offline suportados pelos processadores Ascend.
Em posse dos pesos convertidos para .onnx
(algo como weights.onnx
), devemos executar a linha de comando abaixo para obter o desejado modelo Da Vinci.
atc --input_shape="images:1,3,384,384" --check_report="network_analysis.report" --input_format="NCHW" --output="weights" --soc_version="Ascend310" --framework=5 --model="weights.onnx"
-
input_shape
representa o nome (images) e shape (1, 3, 384, 384) do nó de entrada da rede.- A ordem dos valores segue
input_format
, que é batch_size, channels, height e width.
- A ordem dos valores segue
-
soc_version
representa a arquitetura final para qual o modelo será convertido -- Ascend310, a unidade de processamento neural (UPN) presente no Atlas 500. -
framework
representa a saída de conversão, que nesse caso é ONNX. -
model
representa o nome do arquivo a ser convertido. -
output
representa o nome do arquivo de saída. Ao fim, seráoutput_name.om
, onde.om
representaoffline model
.
Links
- https://support.huawei.com/enterprise/br/doc/EDOC1100192470/7d7ed5e8/atc-tool
- https://support.huaweicloud.com/intl/en-us/instg-cli-cann/atlascli_03_0007.html
- https://support.huaweicloud.com/intl/en-us/atctool-cann502alphaXinfer/atlasatc_16_0004.html
Python Ascend Computing Language (pyACL) é uma biblioteca de API em Python encapsulada usando CPython baseada na Linguagem Comum Ascend (ACL). Usuários pode usar Python para gerenciar a execução e os recursos dos processadores Ascend.
Links
- https://toscode.gitee.com/tianyu__zhou/pyacl_samples/
- https://support.huaweicloud.com/intl/en-us/usermanual-cannApplicationDev330/atlaspython_01_0001.html
- https://support.huawei.com/enterprise/fr/doc/EDOC1100192513/7e88dc5e/pyacl-overview
Deve-se usar a versão A500-3000-3010-firmware_20.3.0 (a ser obtido aqui e seguido os passos daqui) para que tenha sucesso na importação e uso da biblioteca PyACL.
Criação do container com os scripts de inferência:
docker build -t hsc5g-a500 --build-arg NNRT_PKG=Ascend-cann-nnrt_20.3.0_linux-aarch64.run .
O Dockerfile relativo se encontra nesse https://github.com/edgebr/HuaweiAtlas/blob/main/Inference/Dockerfile repositório, bem como os scripts. Note o uso do pacote NNRT. Esse pacote contém as libs necessárias para inferência com o Ascend310, como ACLlib.
docker run --device=/dev/davinci0 --device=/dev/davinci_manager --device=/dev/hisi_hdc --device /dev/devmm_svm -v /usr/bin/vi:/usr/local/bin/vi -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /home/data/miniD/driver/lib64:/home/data/miniD/driver/lib64 -it swr.la-south-2.myhuaweicloud.com/huawei-smart-cities/a500:latest
onde latest
é a versão mais recente da imagem no SWR.
Links
Check the sidebar menu to navigate through the wiki.
(Use o menu da barra lateral para navegar pelo wiki.)