#!/bin/env python3 import os import sys import shutil import subprocess import requests import tarfile import shutil import concurrent.futures import json import glob from datetime import datetime ''' {package_name}_{version}-{revision}_{architecture}.deb lib-llm_1.0-m5stack1_arm64.deb llm-sys_1.0-m5stack1_arm64.deb llm-audio_1.0-m5stack1_arm64.deb llm-kws_1.0-m5stack1_arm64.deb llm-asr_1.0-m5stack1_arm64.deb llm-llm_1.0-m5stack1_arm64.deb llm-tts_1.0-m5stack1_arm64.deb ''' def create_lib_deb(package_name, version, src_folder, revision = 'm5stack1'): deb_file = f"{package_name}_{version}-{revision}_arm64.deb" deb_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'debian-{}'.format(package_name)) if os.path.exists(deb_folder): shutil.rmtree(deb_folder) os.makedirs(deb_folder, exist_ok = True) fileignore = {'ignore':[]} try: with open(os.path.join(src_folder, 'fileignore'), 'r') as f: fileignore = json.load(f) except: pass for item in os.listdir(src_folder): if item.startswith('llm_') or item.startswith('tokenizer_') or item.startswith('llm-kws_') or item.startswith('mode_') or item in fileignore['ignore']: continue elif item.startswith('lib'): os.makedirs(os.path.join(deb_folder, 'opt/m5stack/lib'), exist_ok = True) shutil.copy2(os.path.join(src_folder, item), os.path.join(deb_folder, 'opt/m5stack/lib', item)) else: os.makedirs(os.path.join(deb_folder, 'opt/m5stack/share'), exist_ok = True) source_path = os.path.join(src_folder, item) target_path = os.path.join(deb_folder, 'opt/m5stack/share', item) if os.path.isfile(source_path): shutil.copy2(source_path, target_path) elif os.path.isdir(source_path): shutil.copytree(source_path, target_path) # os.makedirs(os.path.join(deb_folder, 'opt/m5stack/data'), exist_ok = True) # zip_file = 'm5stack_scripts.tar.gz' # down_url = 'https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/m5stack_scripts.tar.gz' # zip_file_extrpath = 'm5stack_scripts' # if not os.path.exists(zip_file_extrpath): # # Downloading via HTTP (more common) # if not os.path.exists(zip_file): # response = requests.get(down_url) # if response.status_code == 200: # with open(zip_file, 'wb') as file: # file.write(response.content) # else: # print("{} down failed".format(down_url)) # with tarfile.open(zip_file, 'r:gz') as tar: # tar.extractall(path=zip_file_extrpath) # print("The {} download successful.".format(down_url)) # if os.path.exists(zip_file_extrpath): # shutil.copytree(zip_file_extrpath, os.path.join(deb_folder, 'opt/m5stack/scripts')) zip_file = 'm5stack_dist-packages.tar.gz' down_url = 'https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/m5stack_dist-packages.tar.gz' zip_file_extrpath = 'm5stack_dist-packages' if not os.path.exists(zip_file_extrpath): # Downloading via HTTP (more common) if not os.path.exists(zip_file): response = requests.get(down_url) if response.status_code == 200: with open(zip_file, 'wb') as file: file.write(response.content) else: print("{} down failed".format(down_url)) with tarfile.open(zip_file, 'r:gz') as tar: tar.extractall(path=zip_file_extrpath) print("The {} download successful.".format(down_url)) if os.path.exists(zip_file_extrpath): shutil.copytree(zip_file_extrpath, os.path.join(deb_folder, 'usr/local/lib/python3.10/dist-packages')) os.makedirs(os.path.join(deb_folder, 'DEBIAN'), exist_ok = True) with open(os.path.join(deb_folder, 'DEBIAN/control'),'w') as f: f.write(f'Package: {package_name}\n') f.write(f'Version: {version}\n') f.write(f'Architecture: arm64\n') f.write(f'Maintainer: dianjixz \n') f.write(f'Original-Maintainer: m5stack \n') f.write(f'Section: llm-module\n') f.write(f'Priority: optional\n') f.write(f'Homepage: https://www.m5stack.com\n') f.write(f'Packaged-Date: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}\n') f.write(f'Description: llm-module\n') f.write(f' bsp.\n') with open(os.path.join(deb_folder, 'DEBIAN/postinst'),'w') as f: f.write(f'#!/bin/sh\n') f.write('''sed -i 's/dpkg -i/apt install -y/g' /usr/local/m5stack/update_check.sh\n''') f.write(f'[ -f "/lib/systemd/system/llm-sys.service" ] && systemctl enable llm-sys.service\n') f.write(f'[ -f "/lib/systemd/system/llm-sys.service" ] && systemctl start llm-sys.service\n') f.write(f'[ -f "/lib/systemd/system/llm-asr.service" ] && systemctl enable llm-asr.service\n') f.write(f'[ -f "/lib/systemd/system/llm-asr.service" ] && systemctl start llm-asr.service\n') f.write(f'[ -f "/lib/systemd/system/llm-audio.service" ] && systemctl enable llm-audio.service\n') f.write(f'[ -f "/lib/systemd/system/llm-audio.service" ] && systemctl start llm-audio.service\n') f.write(f'[ -f "/lib/systemd/system/llm-kws.service" ] && systemctl enable llm-kws.service\n') f.write(f'[ -f "/lib/systemd/system/llm-kws.service" ] && systemctl start llm-kws.service\n') f.write(f'[ -f "/lib/systemd/system/llm-llm.service" ] && systemctl enable llm-llm.service\n') f.write(f'[ -f "/lib/systemd/system/llm-llm.service" ] && systemctl start llm-llm.service\n') f.write(f'[ -f "/lib/systemd/system/llm-tts.service" ] && systemctl enable llm-tts.service\n') f.write(f'[ -f "/lib/systemd/system/llm-tts.service" ] && systemctl start llm-tts.service\n') f.write(f'[ -f "/lib/systemd/system/llm-camera.service" ] && systemctl enable llm-camera.service\n') f.write(f'[ -f "/lib/systemd/system/llm-camera.service" ] && systemctl start llm-camera.service\n') f.write(f'[ -f "/lib/systemd/system/llm-yolo.service" ] && systemctl enable llm-yolo.service\n') f.write(f'[ -f "/lib/systemd/system/llm-yolo.service" ] && systemctl start llm-yolo.service\n') f.write(f'[ -f "/lib/systemd/system/llm-melotts.service" ] && systemctl enable llm-melotts.service\n') f.write(f'[ -f "/lib/systemd/system/llm-melotts.service" ] && systemctl start llm-melotts.service\n') f.write(f'exit 0\n') with open(os.path.join(deb_folder, 'DEBIAN/prerm'),'w') as f: f.write(f'#!/bin/sh\n') f.write(f'[ -f "/lib/systemd/system/llm-tts.service" ] && systemctl stop llm-tts.service\n') f.write(f'[ -f "/lib/systemd/system/llm-tts.service" ] && systemctl disable llm-tts.service\n') f.write(f'[ -f "/lib/systemd/system/llm-llm.service" ] && systemctl stop llm-llm.service\n') f.write(f'[ -f "/lib/systemd/system/llm-llm.service" ] && systemctl disable llm-llm.service\n') f.write(f'[ -f "/lib/systemd/system/llm-kws.service" ] && systemctl stop llm-kws.service\n') f.write(f'[ -f "/lib/systemd/system/llm-kws.service" ] && systemctl disable llm-kws.service\n') f.write(f'[ -f "/lib/systemd/system/llm-audio.service" ] && systemctl stop llm-audio.service\n') f.write(f'[ -f "/lib/systemd/system/llm-audio.service" ] && systemctl disable llm-audio.service\n') f.write(f'[ -f "/lib/systemd/system/llm-asr.service" ] && systemctl stop llm-asr.service\n') f.write(f'[ -f "/lib/systemd/system/llm-asr.service" ] && systemctl disable llm-asr.service\n') f.write(f'[ -f "/lib/systemd/system/llm-sys.service" ] && systemctl stop llm-sys.service\n') f.write(f'[ -f "/lib/systemd/system/llm-sys.service" ] && systemctl disable llm-sys.service\n') f.write(f'[ -f "/lib/systemd/system/llm-camera.service" ] && systemctl stop llm-camera.service\n') f.write(f'[ -f "/lib/systemd/system/llm-camera.service" ] && systemctl disable llm-camera.service\n') f.write(f'[ -f "/lib/systemd/system/llm-yolo.service" ] && systemctl stop llm-yolo.service\n') f.write(f'[ -f "/lib/systemd/system/llm-yolo.service" ] && systemctl disable llm-yolo.service\n') f.write(f'[ -f "/lib/systemd/system/llm-melotts.service" ] && systemctl stop llm-melotts.service\n') f.write(f'[ -f "/lib/systemd/system/llm-melotts.service" ] && systemctl disable llm-melotts.service\n') f.write(f'exit 0\n') os.chmod(os.path.join(deb_folder, 'DEBIAN/postinst'), 0o755) os.chmod(os.path.join(deb_folder, 'DEBIAN/prerm'), 0o755) subprocess.run(["dpkg-deb", "-b", deb_folder, deb_file], check=True) print(f"Debian package created: {deb_file}") shutil.rmtree(deb_folder) return package_name + " creat success!" def create_data_deb(package_name, version, src_folder, revision='m5stack1', depends='lib-llm (>= 1.6)'): deb_file = f"{package_name}_{version}-{revision}_arm64.deb" deb_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'debian-{package_name}') if os.path.exists(deb_folder): shutil.rmtree(deb_folder) os.makedirs(deb_folder, exist_ok=True) zip_file = f"m5stack_{package_name[0:4]+package_name[10:]}_{version}_data.tar.gz" down_url = f"https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/m5stack_{package_name[0:4]+package_name[10:]}_{version}_data.tar.gz" zip_file_extrpath = f"m5stack_{package_name}_{version}_data" if not os.path.exists(zip_file_extrpath): if not os.path.exists(zip_file): response = requests.get(down_url) if response.status_code == 200: with open(zip_file, 'wb') as file: file.write(response.content) else: print(f"{down_url} download failed.") with tarfile.open(zip_file, 'r:gz') as tar: tar.extractall(path=zip_file_extrpath) print(f"The {down_url} download successful.") if os.path.exists(zip_file_extrpath): shutil.copytree(zip_file_extrpath, os.path.join(deb_folder, 'opt/m5stack/data')) RED = "\033[31m" RESET = "\033[0m" os.makedirs(os.path.join(deb_folder, 'opt/m5stack/data/models'), exist_ok=True) mode_config_file = os.path.join(src_folder, f'mode_{package_name[10:]}.json') if os.path.exists(mode_config_file): shutil.copy2(mode_config_file, os.path.join(deb_folder, 'opt/m5stack/data/models', f'mode_{package_name[10:]}.json')) try: with open(mode_config_file, 'r', encoding='utf-8') as file: data = json.load(file) for scripts_file in data['mode_param'].get('ext_scripts', []): src_path = os.path.join(src_folder, scripts_file) dest_dir = os.path.join(deb_folder, 'opt/m5stack/scripts') os.makedirs(dest_dir, exist_ok=True) if os.path.isfile(src_path): shutil.copy2(src_path, os.path.join(dest_dir, os.path.basename(scripts_file))) print(f"Copied file: {scripts_file}") elif os.path.isdir(src_path): shutil.copytree(src_path, os.path.join(dest_dir, os.path.basename(scripts_file)), dirs_exist_ok=True) print(f"Copied folder: {scripts_file}") else: print(f"Warning: {scripts_file} not found in {src_folder}") except Exception as e: print(f"Error reading ext_scripts: {e}") else: print(RED, mode_config_file, " missing", RESET) os.makedirs(os.path.join(deb_folder, 'DEBIAN'), exist_ok=True) with open(os.path.join(deb_folder, 'DEBIAN/control'), 'w') as f: f.write(f'Package: {package_name}\n') f.write(f'Version: {version}\n') f.write(f'Architecture: arm64\n') f.write(f'Maintainer: dianjixz \n') f.write(f'Original-Maintainer: m5stack \n') f.write(f'Section: llm-module\n') f.write(f'Priority: optional\n') f.write(f'Depends: {depends}\n') f.write(f'Homepage: https://www.m5stack.com\n') if deb_file.startswith('llm-model-'): deb_name = deb_file[:deb_file.find('_')] old_deb_name = deb_name.replace('model-', '').lower() f.write(f'Conflicts: {old_deb_name}\n') f.write(f'Packaged-Date: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}\n') f.write(f'Description: llm-module\n') f.write(f' bsp.\n') with open(os.path.join(deb_folder, 'DEBIAN/postinst'), 'w') as f: f.write('#!/bin/sh\nexit 0\n') with open(os.path.join(deb_folder, 'DEBIAN/prerm'), 'w') as f: f.write('#!/bin/sh\nexit 0\n') os.chmod(os.path.join(deb_folder, 'DEBIAN/postinst'), 0o755) os.chmod(os.path.join(deb_folder, 'DEBIAN/prerm'), 0o755) subprocess.run(["dpkg-deb", "-b", deb_folder, deb_file], check=True) print(f"Debian package created: {deb_file}") shutil.rmtree(deb_folder) return package_name + " creat success!" def create_bin_deb(package_name, version, src_folder, revision = 'm5stack1', depends = 'lib-llm (>= 1.8), llm-sys'): bin_files = glob.glob(os.path.join(src_folder, package_name.replace("-", "_") + "-*")) version_info = "0" if bin_files: for bin_file in bin_files: ver = bin_file.split('-')[-1] if ver > version_info: version_info = ver version = version_info deb_file = f"{package_name}_{version}-{revision}_arm64.deb" deb_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'debian-{}'.format(package_name)) # os.makedirs(deb_folder, exist_ok=True) if os.path.exists(deb_folder): shutil.rmtree(deb_folder) os.makedirs(os.path.join(deb_folder, 'opt/m5stack/bin'), exist_ok = True) os.makedirs(os.path.join(deb_folder, 'DEBIAN'), exist_ok = True) # shutil.copytree(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'deb_overlay'), deb_folder) if package_name == 'llm-openai-api': m5module_dir = os.path.join(src_folder, 'ModuleLLM-OpenAI-Plugin') if os.path.exists(m5module_dir): shutil.copytree(m5module_dir, os.path.join(deb_folder, 'opt/m5stack/bin/ModuleLLM-OpenAI-Plugin')) openai_api_dir = os.path.join(src_folder, 'openai-api') if os.path.exists(openai_api_dir): shutil.copytree(openai_api_dir, os.path.join(deb_folder, 'opt/m5stack/lib/openai-api')) if package_name == 'llm-kws': sherpa_dir = os.path.join(src_folder, 'sherpa-onnx') if os.path.exists(sherpa_dir): shutil.copytree(sherpa_dir, os.path.join(deb_folder, 'opt/m5stack/lib/sherpa-onnx')) if package_name == 'llm-llm': llm_dir = os.path.join(src_folder, 'llm') if os.path.exists(llm_dir): shutil.copytree(llm_dir, os.path.join(deb_folder, 'opt/m5stack/lib/llm')) if package_name == 'llm-vlm': vlm_dir = os.path.join(src_folder, 'vlm') if os.path.exists(vlm_dir): shutil.copytree(vlm_dir, os.path.join(deb_folder, 'opt/m5stack/lib/vlm')) if package_name == 'llm-cosy-voice': cosy_voice_dir = os.path.join(src_folder, 'cosy-voice') if os.path.exists(cosy_voice_dir): shutil.copytree(cosy_voice_dir, os.path.join(deb_folder, 'opt/m5stack/lib/cosy-voice')) bin_file_name = package_name.replace("-", "_") if version_info != 0.0: bin_file_name = package_name.replace("-", "_") + f'-{version}' shutil.copy2(os.path.join(src_folder, bin_file_name), os.path.join(deb_folder, 'opt/m5stack/bin', bin_file_name)) ext_scripts_files = glob.glob(os.path.join(src_folder, package_name + "_*")) if ext_scripts_files: os.makedirs(os.path.join(deb_folder, 'opt/m5stack/scripts'), exist_ok = True) for ext_script_file in ext_scripts_files: shutil.copy2(ext_script_file, os.path.join(deb_folder, 'opt/m5stack/scripts')) with open(os.path.join(deb_folder, 'DEBIAN/control'),'w') as f: f.write(f'Package: {package_name}\n') f.write(f'Version: {version}\n') f.write(f'Architecture: arm64\n') f.write(f'Maintainer: dianjixz \n') f.write(f'Original-Maintainer: m5stack \n') f.write(f'Section: llm-module\n') f.write(f'Priority: optional\n') # f.write(f'Depends: lib-llm\n') f.write(f'Depends: {depends}\n') f.write(f'Homepage: https://www.m5stack.com\n') f.write(f'Packaged-Date: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}\n') f.write(f'Description: llm-module\n') f.write(f' bsp.\n') with open(os.path.join(deb_folder, 'DEBIAN/postinst'),'w') as f: f.write(f'#!/bin/sh\n') f.write(f'[ -f "/lib/systemd/system/{package_name}.service" ] && systemctl enable {package_name}.service\n') f.write(f'[ -f "/lib/systemd/system/{package_name}.service" ] && systemctl start {package_name}.service\n') f.write(f'exit 0\n') with open(os.path.join(deb_folder, 'DEBIAN/prerm'),'w') as f: f.write(f'#!/bin/sh\n') f.write(f'[ -f "/lib/systemd/system/{package_name}.service" ] && systemctl stop {package_name}.service\n') f.write(f'[ -f "/lib/systemd/system/{package_name}.service" ] && systemctl disable {package_name}.service\n') f.write(f'exit 0\n') os.makedirs(os.path.join(deb_folder, 'lib/systemd/system'), exist_ok = True) with open(os.path.join(deb_folder, f'lib/systemd/system/{package_name}.service'),'w') as f: f.write(f'[Unit]\n') f.write(f'Description={package_name} Service\n') if package_name != 'llm-sys': f.write(f'After=llm-sys.service\n') f.write(f'Requires=llm-sys.service\n') f.write(f'\n') f.write(f'[Service]\n') f.write(f'ExecStart=/opt/m5stack/bin/{bin_file_name}\n') f.write(f'WorkingDirectory=/opt/m5stack\n') f.write(f'Restart=always\n') f.write(f'RestartSec=1\n') f.write(f'StartLimitInterval=0\n') f.write(f'\n') f.write(f'[Install]\n') f.write(f'WantedBy=multi-user.target\n') f.write(f'\n') os.chmod(os.path.join(deb_folder, 'DEBIAN/postinst'), 0o755) os.chmod(os.path.join(deb_folder, 'DEBIAN/prerm'), 0o755) subprocess.run(["dpkg-deb", "-b", deb_folder, deb_file], check=True) print(f"Debian package created: {deb_file}") shutil.rmtree(deb_folder) return package_name + " creat success!" if __name__ == "__main__": if "clean" in sys.argv: os.system('rm ./*.deb') os.system('find . -maxdepth 1 -type d ! -name "." -exec rm -rf {} +') exit(0) if "distclean" in sys.argv: os.system('rm ./*.deb m5stack_* -rf') exit(0) version = '1.5' data_version = '0.2' src_folder = '../dist' revision = 'm5stack1' create_lib = True create_bin = True create_data = True create_llm_data = True # if len(sys.argv) > 1: # src_folder = sys.argv[1] cpu_count = os.cpu_count() if cpu_count - 2 < 1: cpu_count = 2 else: cpu_count = cpu_count - 2 # cpu_count = 50 Tasks = { # Unit 'lib-llm':[create_lib_deb,'lib-llm', '1.10', src_folder, revision], 'llm-sys':[create_bin_deb,'llm-sys', '1.6', src_folder, revision, 'lib-llm (>= 1.8)'], 'llm-audio':[create_bin_deb,'llm-audio', '1.9', src_folder, revision], 'llm-kws':[create_bin_deb,'llm-kws', '1.13', src_folder, revision], 'llm-asr':[create_bin_deb,'llm-asr', '1.11', src_folder, revision], 'llm-llm':[create_bin_deb,'llm-llm', '1.12', src_folder, revision], 'llm-llm2':[create_bin_deb,'llm-llm2', '1.12', src_folder, revision], 'llm-tts':[create_bin_deb,'llm-tts', '1.7', src_folder, revision], 'llm-melotts':[create_bin_deb,'llm-melotts', '1.11', src_folder, revision], 'llm-camera':[create_bin_deb,'llm-camera', '1.9', src_folder, revision, 'lib-llm'], 'llm-vlm':[create_bin_deb,'llm-vlm', '1.11', src_folder, revision], 'llm-yolo':[create_bin_deb,'llm-yolo', '1.9', src_folder, revision], 'llm-skel':[create_bin_deb,'llm-skel', version, src_folder, revision], 'llm-depth-anything':[create_bin_deb,'llm-depth-anything', '1.7', src_folder, revision], 'llm-vad':[create_bin_deb,'llm-vad', '1.9', src_folder, revision], 'llm-whisper':[create_bin_deb,'llm-whisper', '1.8', src_folder, revision], 'llm-openai-api':[create_bin_deb,'llm-openai-api', '1.10', src_folder, revision], 'llm-cosy-voice':[create_bin_deb,'llm-cosy-voice', '1.10', src_folder, revision], # keyword spotting Audio file 'llm-model-audio-en-us':[create_data_deb,'llm-model-audio-en-us', '0.3', src_folder, revision], 'llm-model-audio-zh-cn':[create_data_deb,'llm-model-audio-zh-cn', '0.3', src_folder, revision], # Kaldi model 'llm-model-sherpa-ncnn-streaming-zipformer-20M-2023-02-17':[create_data_deb,'llm-model-sherpa-ncnn-streaming-zipformer-20M-2023-02-17', data_version, src_folder, revision], 'llm-model-sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23':[create_data_deb,'llm-model-sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23', data_version, src_folder, revision], 'llm-model-sherpa-onnx-kws-zipformer-gigaspeech-3.3M-2024-01-01':[create_data_deb,'llm-model-sherpa-onnx-kws-zipformer-gigaspeech-3.3M-2024-01-01', '0.3', src_folder, revision], 'llm-model-sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01':[create_data_deb,'llm-model-sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01', '0.3', src_folder, revision], 'llm-model-sherpa-onnx-streaming-zipformer-small-bilingual-zh-en-2023-02-16':[create_data_deb,'llm-model-sherpa-onnx-streaming-zipformer-small-bilingual-zh-en-2023-02-16', '0.4', src_folder, revision], 'llm-model-sherpa-onnx-streaming-zipformer-small-bilingual-zh-en-2023-02-16-ax650':[create_data_deb,'llm-model-sherpa-onnx-streaming-zipformer-small-bilingual-zh-en-2023-02-16-ax650', '0.4', src_folder, revision], # KWS model ## AX630C 'llm-model-kws-ax630c':[create_data_deb,'llm-model-kws-ax630c', '0.4', src_folder, revision], ## AX650 'llm-model-kws-ax650':[create_data_deb,'llm-model-kws-ax650', '0.4', src_folder, revision], # ASR model ## AX630C 'llm-model-sense-voice-small-10s':[create_data_deb,'llm-model-sense-voice-small-10s', '0.4', src_folder, revision], ## AX650 'llm-model-sense-voice-small-10s-ax650':[create_data_deb,'llm-model-sense-voice-small-10s-ax650', '0.4', src_folder, revision], 'llm-model-fire-red-asr-ctc-10s-ax650':[create_data_deb,'llm-model-fire-red-asr-ctc-10s-ax650', '0.4', src_folder, revision], # TTS model 'llm-model-single-speaker-english-fast':[create_data_deb,'llm-model-single-speaker-english-fast', '0.3', src_folder, revision], 'llm-model-single-speaker-fast':[create_data_deb,'llm-model-single-speaker-fast', '0.3', src_folder, revision], 'llm-model-kokoro-1.0-ax650':[create_data_deb,'llm-model-kokoro-1.0-ax650', '0.4', src_folder, revision], 'llm-model-kokoro-1.1-ax650':[create_data_deb,'llm-model-kokoro-1.1-ax650', '0.4', src_folder, revision], # VAD model 'llm-model-silero-vad':[create_data_deb,'llm-model-silero-vad', '0.4', src_folder, revision], # MeloTTS model ## AX630C 'llm-model-melotts-zh-cn':[create_data_deb,'llm-model-melotts-zh-cn', '0.6', src_folder, revision], 'llm-model-melotts-en-au':[create_data_deb,'llm-model-melotts-en-au', '0.6', src_folder, revision], 'llm-model-melotts-en-br':[create_data_deb,'llm-model-melotts-en-br', '0.6', src_folder, revision], 'llm-model-melotts-en-default':[create_data_deb,'llm-model-melotts-en-default', '0.6', src_folder, revision], 'llm-model-melotts-en-india':[create_data_deb,'llm-model-melotts-en-india', '0.6', src_folder, revision], 'llm-model-melotts-en-us':[create_data_deb,'llm-model-melotts-en-us', '0.6', src_folder, revision], 'llm-model-melotts-ja-jp':[create_data_deb,'llm-model-melotts-ja-jp', '0.6', src_folder, revision], 'llm-model-melotts-es-es':[create_data_deb,'llm-model-melotts-es-es', '0.5', src_folder, revision], ## AX650 'llm-model-melotts-zh-cn-ax650':[create_data_deb,'llm-model-melotts-zh-cn-ax650', '0.7', src_folder, revision], 'llm-model-melotts-en-au-ax650':[create_data_deb,'llm-model-melotts-en-au-ax650', '0.7', src_folder, revision], 'llm-model-melotts-en-br-ax650':[create_data_deb,'llm-model-melotts-en-br-ax650', '0.7', src_folder, revision], 'llm-model-melotts-en-default-ax650':[create_data_deb,'llm-model-melotts-en-default-ax650', '0.7', src_folder, revision], 'llm-model-melotts-en-india-ax650':[create_data_deb,'llm-model-melotts-en-india-ax650', '0.7', src_folder, revision], 'llm-model-melotts-en-us-ax650':[create_data_deb,'llm-model-melotts-en-us-ax650', '0.7', src_folder, revision], 'llm-model-melotts-ja-jp-ax650':[create_data_deb,'llm-model-melotts-ja-jp-ax650', '0.7', src_folder, revision], 'llm-model-melotts-es-es-ax650':[create_data_deb,'llm-model-melotts-es-es-ax650', '0.6', src_folder, revision], # CosyVoice2 model ## AX650 'llm-model-CosyVoice2-0.5B-ax650':[create_data_deb,'llm-model-CosyVoice2-0.5B-ax650', '0.6', src_folder, revision], # Yolo model ## AX630C 'llm-model-yolo11n':[create_data_deb,'llm-model-yolo11n', data_version, src_folder, revision], 'llm-model-yolo11n-pose':[create_data_deb,'llm-model-yolo11n-pose', '0.3', src_folder, revision], 'llm-model-yolo11n-hand-pose':[create_data_deb,'llm-model-yolo11n-hand-pose', '0.3', src_folder, revision], 'llm-model-yolo11n-seg':[create_data_deb,'llm-model-yolo11n-seg', '0.3', src_folder, revision], 'llm-model-yolo11n-npu1':[create_data_deb,'llm-model-yolo11n-npu1', '0.4', src_folder, revision], 'llm-model-yolo11n-pose-npu1':[create_data_deb,'llm-model-yolo11n-pose-npu1', '0.4', src_folder, revision], 'llm-model-yolo11n-hand-pose-npu1':[create_data_deb,'llm-model-yolo11n-hand-pose-npu1', '0.4', src_folder, revision], 'llm-model-yolo11n-seg-npu1':[create_data_deb,'llm-model-yolo11n-seg-npu1', '0.4', src_folder, revision], ## AX650 'llm-model-yolo11n-ax650':[create_data_deb,'llm-model-yolo11n-ax650', '0.4', src_folder, revision], 'llm-model-yolo11n-pose-ax650':[create_data_deb,'llm-model-yolo11n-pose-ax650', '0.4', src_folder, revision], 'llm-model-yolo11n-hand-pose-ax650':[create_data_deb,'llm-model-yolo11n-hand-pose-ax650', '0.4', src_folder, revision], 'llm-model-yolo11n-seg-ax650':[create_data_deb,'llm-model-yolo11n-seg-ax650', '0.4', src_folder, revision], # DepthAnything model ## AX630C 'llm-model-depth-anything-ax630c':[create_data_deb,'llm-model-depth-anything-ax630c', '0.4', src_folder, revision], 'llm-model-depth-anything-npu1-ax630c':[create_data_deb,'llm-model-depth-anything-npu1-ax630c', '0.4', src_folder, revision], ## AX650 'llm-model-depth-anything-ax650':[create_data_deb,'llm-model-depth-anything-ax650', '0.4', src_folder, revision], # Whisper model ## AX630C 'llm-model-whisper-tiny':[create_data_deb,'llm-model-whisper-tiny', '0.4', src_folder, revision], 'llm-model-whisper-base':[create_data_deb,'llm-model-whisper-base', '0.4', src_folder, revision], 'llm-model-whisper-small':[create_data_deb,'llm-model-whisper-small', '0.4', src_folder, revision], ## AX650 'llm-model-whisper-tiny-ax650':[create_data_deb,'llm-model-whisper-tiny-ax650', '0.4', src_folder, revision], 'llm-model-whisper-base-ax650':[create_data_deb,'llm-model-whisper-base-ax650', '0.4', src_folder, revision], 'llm-model-whisper-small-ax650':[create_data_deb,'llm-model-whisper-small-ax650', '0.4', src_folder, revision], # Qwen model ## AX630C 'llm-model-qwen2.5-0.5B-prefill-20e':[create_data_deb,'llm-model-qwen2.5-0.5B-prefill-20e', data_version, src_folder, revision], 'llm-model-qwen2.5-0.5B-p256-ax630c':[create_data_deb,'llm-model-qwen2.5-0.5B-p256-ax630c', '0.4', src_folder, revision], 'llm-model-qwen2.5-0.5B-Int4-ax630c':[create_data_deb,'llm-model-qwen2.5-0.5B-Int4-ax630c', '0.4', src_folder, revision], 'llm-model-qwen2.5-HA-0.5B-ctx-ax630c':[create_data_deb,'llm-model-qwen2.5-HA-0.5B-ctx-ax630c', '0.7', src_folder, revision], 'llm-model-qwen2.5-1.5B-ax630c':[create_data_deb,'llm-model-qwen2.5-1.5B-ax630c', '0.3', src_folder, revision], 'llm-model-qwen2.5-1.5B-p256-ax630c':[create_data_deb,'llm-model-qwen2.5-1.5B-p256-ax630c', '0.4', src_folder, revision], 'llm-model-qwen2.5-1.5B-Int4-ax630c':[create_data_deb,'llm-model-qwen2.5-1.5B-Int4-ax630c', '0.4', src_folder, revision], 'llm-model-qwen2.5-coder-0.5B-ax630c':[create_data_deb,'llm-model-qwen2.5-coder-0.5B-ax630c', data_version, src_folder, revision], 'llm-model-qwen3-0.6B-ax630c':[create_data_deb,'llm-model-qwen3-0.6B-ax630c', '0.4', src_folder, revision], 'llm-model-qwen3-vl-2B-Int4-ax630c':[create_data_deb,'llm-model-qwen3-vl-2B-Int4-ax630c', '0.5', src_folder, revision], ## AX650 'llm-model-qwen2.5-0.5B-Int4-ax650':[create_data_deb,'llm-model-qwen2.5-0.5B-Int4-ax650', '0.4', src_folder, revision], 'llm-model-qwen2.5-HA-0.5B-ctx-ax650':[create_data_deb,'llm-model-qwen2.5-HA-0.5B-ctx-ax650', '0.7', src_folder, revision], 'llm-model-qwen2.5-1.5B-Int4-ax650':[create_data_deb,'llm-model-qwen2.5-1.5B-Int4-ax650', '0.4', src_folder, revision], 'llm-model-qwen2.5-3B-Int4-ax650':[create_data_deb,'llm-model-qwen2.5-3B-Int4-ax650', '0.4', src_folder, revision], 'llm-model-qwen2.5-7B-Int4-ax650':[create_data_deb,'llm-model-qwen2.5-7B-Int4-ax650', '0.4', src_folder, revision], 'llm-model-qwen3-vl-2B-Int4-ax650':[create_data_deb,'llm-model-qwen3-vl-2B-Int4-ax650', '0.5', src_folder, revision], 'llm-model-qwen3-vl-2B-Int4-P1536-ax650':[create_data_deb,'llm-model-qwen3-vl-2B-Int4-P1536-ax650', '0.5', src_folder, revision], 'llm-model-Qwen3-0.6B-ax650':[create_data_deb,'llm-model-Qwen3-0.6B-ax650', '0.5', src_folder, revision], 'llm-model-Qwen3-1.7B-ax650':[create_data_deb,'llm-model-Qwen3-1.7B-ax650', '0.5', src_folder, revision], 'llm-model-Qwen3.5-0.8B-ax650':[create_data_deb,'llm-model-Qwen3.5-0.8B-ax650', '0.6', src_folder, revision], 'llm-model-Qwen3.5-0.8B-Int4-ax650':[create_data_deb,'llm-model-Qwen3.5-0.8B-Int4-ax650', '0.6', src_folder, revision], 'llm-model-Qwen3.5-2B-ax650':[create_data_deb,'llm-model-Qwen3.5-2B-ax650', '0.6', src_folder, revision], 'llm-model-Qwen3.5-2B-Int4-ax650':[create_data_deb,'llm-model-Qwen3.5-2B-Int4-ax650', '0.6', src_folder, revision], 'llm-model-Qwen3.5-4B-Int4-ax650':[create_data_deb,'llm-model-Qwen3.5-4B-Int4-ax650', '0.6', src_folder, revision], # Llama model 'llm-model-llama3.2-1B-prefill-ax630c':[create_data_deb,'llm-model-llama3.2-1B-prefill-ax630c', data_version, src_folder, revision], 'llm-model-llama3.2-1B-p256-ax630c':[create_data_deb,'llm-model-llama3.2-1B-p256-ax630c', '0.4', src_folder, revision], 'llm-model-openbuddy-llama3.2-1B-ax630c':[create_data_deb,'llm-model-openbuddy-llama3.2-1B-ax630c', data_version, src_folder, revision], # InternVL model ## AX630C 'llm-model-internvl2.5-1B-ax630c':[create_data_deb,'llm-model-internvl2.5-1B-ax630c', '0.4', src_folder, revision], 'llm-model-internvl2.5-1B-364-ax630c':[create_data_deb,'llm-model-internvl2.5-1B-364-ax630c', '0.4', src_folder, revision], 'llm-model-internvl3-1B-448-ax630c':[create_data_deb,'llm-model-internvl3-1B-448-ax630c', '0.6', src_folder, revision], ## AX650 'llm-model-internvl3-1B-448-ax650':[create_data_deb,'llm-model-internvl3-1B-448-ax650', '0.6', src_folder, revision], # DeepSeek model ## AX630C 'llm-model-deepseek-r1-1.5B-ax630c':[create_data_deb,'llm-model-deepseek-r1-1.5B-ax630c', '0.3', src_folder, revision], 'llm-model-deepseek-r1-1.5B-p256-ax630c':[create_data_deb,'llm-model-deepseek-r1-1.5B-p256-ax630c', '0.4', src_folder, revision], ## AX650 'llm-model-deepseek-r1-1.5B-Int4-ax650':[create_data_deb,'llm-model-deepseek-r1-1.5B-Int4-ax650', '0.4', src_folder, revision],# 'llm-model-deepseek-r1-7B-Int4-ax650':[create_data_deb,'llm-model-deepseek-r1-7B-Int4-ax650', '0.4', src_folder, revision],# # Smolvlm model ## AX630C 'llm-model-smolvlm-256M-ax630c':[create_data_deb,'llm-model-smolvlm-256M-ax630c', '0.4', src_folder, revision], 'llm-model-smolvlm-256M-ax650':[create_data_deb,'llm-model-smolvlm-256M-ax650', '0.4', src_folder, revision], ## AX650 'llm-model-smolvlm-500M-ax630c':[create_data_deb,'llm-model-smolvlm-500M-ax630c', '0.4', src_folder, revision], # 'llm-model-qwen2-0.5B-prefill-20e':[create_data_deb,'llm-model-qwen2-0.5B-prefill-20e', data_version, src_folder, revision], # 'llm-model-qwen2-1.5B-prefill-20e':[create_data_deb,'llm-model-qwen2-1.5B-prefill-20e', data_version, src_folder, revision] } exit_flage = 0 for taskname in Tasks: if taskname in sys.argv: argv = Tasks[taskname][1:] Tasks[taskname][0](*argv) exit_flage = 1 if exit_flage : exit(0) with concurrent.futures.ThreadPoolExecutor(max_workers=cpu_count) as executor: futures = [] if (create_lib): for task in Tasks: if (Tasks[task][0] == create_lib_deb): futures.append(executor.submit(*Tasks[task])) if (create_bin): for task in Tasks: if (Tasks[task][0] == create_bin_deb): futures.append(executor.submit(*Tasks[task])) if (create_data): for task in Tasks: if (Tasks[task][0] == create_data_deb): futures.append(executor.submit(*Tasks[task])) for future in concurrent.futures.as_completed(futures): result = future.result() print(result)