Skip to content

ML Project - Build and Run on Arm Virtual Hardware FVP #11

ML Project - Build and Run on Arm Virtual Hardware FVP

ML Project - Build and Run on Arm Virtual Hardware FVP #11

# This YAML file is used to build and run an ML project on Arm Virtual Hardware FVP
# It contains a job that runs tests on a Ubuntu machine using a custom Docker image
name: ML Project - Build and Run on Arm Virtual Hardware FVP
on:
# Trigger the workflow when a workflow run is completed
workflow_run:
workflows: ["Licensed Docker Image - Build and Push"]
types:
- completed
# Trigger the workflow manually
workflow_dispatch:
jobs:
run_test:
runs-on: ubuntu-latest
container:
# Use the custom Docker image with the necessary tools and dependencies
image: ghcr.io/arm-software/avh-mlops/arm-mlops-docker-licensed:latest
credentials:
# Set the Docker image credentials using the actor and a GitHub token
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout repository
# Check out the repository containing the ML project
uses: actions/checkout@v2
- name: Set permissions for working directory __w
# Set permissions for the working directory to avoid permission errors
run: chmod 777 -R /__w
- name: Install custom CMSIS packs
# Install custom CMSIS packs required for the ML project
run: |
wget -P /home/arm_mlops_docker https://github.com/ARM-software/CMSIS-DFP/releases/download/dev%2Fv1.0.0-dev12/ARM.CMSIS_DFP.1.0.0-dev12+g285da21.pack -nv
su -l arm_mlops_docker -c "/home/arm_mlops_docker/cmsis-toolbox-linux-amd64/bin/cpackget add ARM.CMSIS_DFP.1.0.0-dev12+g285da21.pack --agree-embedded-license"
- name: Build Model for Cortex-M55 with AC6 (size)
# Build the ML model for Cortex-M55 using AC6 toolchain and size optimization
run: |
su - arm_mlops_docker -c "/home/arm_mlops_docker/cmsis-toolbox-linux-amd64/bin/cbuild /__w/AVH-MLOps/AVH-MLOps/TFLmicrospeech/MLOps.csolution.yml --packs --context ML_Model.size+CM55 --toolchain AC6"
- name: Build Test Project for Cortex-M55 with AC6 (size)
# Build the test project for Cortex-M55 using AC6 toolchain and size optimization
run: |
su - arm_mlops_docker -c "/home/arm_mlops_docker/cmsis-toolbox-linux-amd64/bin/cbuild /__w/AVH-MLOps/AVH-MLOps/TFLmicrospeech/MLOps.csolution.yml --packs --context ML_Test.size+CM55 --update-rte --toolchain AC6"
- name: Execute Test Project on Cortex-M55 Arm Virtual Hardware FVP
# Execute the test project on Cortex-M55 Arm Virtual Hardware FVP
run: |
su - arm_mlops_docker -c "LD_LIBRARY_PATH=/home/arm_mlops_docker/avh-fvp-11.21.15/avh-fvp-cortex-m-linux-amd64/bin/ /home/arm_mlops_docker/avh-fvp-11.21.15/avh-fvp-cortex-m-linux-amd64/bin/VHT_Corstone_SSE-300_Ethos-U55 -f /__w/AVH-MLOps/AVH-MLOps/TFLmicrospeech/Target/CM55_Ethos/fvp_config.txt /__w/AVH-MLOps/AVH-MLOps/TFLmicrospeech/out/ML_Test/CM55/size/ML_Test.axf --simlimit 22"