Ранее я писал в блоге о том, как собрать и установить Tensorflow в среде Android Termux здесь:
https://medium.com/analytics-vidhya/developing-tensorflow-on-android-phone-cfc4297b676e
На этот раз настала очередь PyTorch. К счастью, процесс настройки PyTorch довольно прост по сравнению с Tensorflow. Не существует такой сложной системы сборки, как JVM/Bazel. Все, что вам нужно, это cmake вместе с некоторой модификацией ассемблерного кода ARM, после чего все готово.
И. Предпосылки
Обратите внимание: если вы уже следили за моим последним блогом об установке Tensorflow внутри Termux, вы можете пропустить этот обязательный раздел.
- Установите Termux из Google PlayStore.
- Запустите Термукс.
- Убедитесь, что Termux обновлен:
pkg upgrade
- Установите wget и root:
pkg install wget proot
- Создайте каталог для установки Ubuntu:
mkdir ubuntu && cd ubuntu
- Загрузите сценарий установки Ubuntu chroot:
wget https://raw.githubusercontent.com/Neo-Oli/termux-ubuntu/master/ubuntu.sh
- Запустите скрипт установки:
bash ubuntu.sh
Теперь мы можем запустить Ubuntu, запустив скрипт: ./start-ubuntu.sh
Далее мы проверим и установим обновления на образ Ubuntu.
apt-get update && apt-get upgrade
Установите некоторые предварительные условия.
apt-get install git wget vim zip build-essential python python3 python3-dev python3-pip libhdf5-dev
II. Настройка PyTorch в среде Termux.
- Клонируйте PyTorch с GitHub.
git clone --recursive https://github.com/pytorch/pytorch
2. Проверьте последнюю известную версию, которую можно установить на архитектуре ARM.
cd pytorch git checkout v1.5.0
3. Измените часть кода сборки ARM, которая изначально не совместима с процессором ARM в системах Android.
- Описание модификации состоит в том, чтобы изменить способ доступа операндов к значениям регистров с 4 шортов на 16 байтов (что имеет точно такое же значение в архитектуре ЦП ARM). Это изменение необходимо, поскольку ассемблер ARM NEON в Android не понимает тип данных 4s.
File: aten/src/ATen/native/quantized/cpu/qnnpack/src/q8gemm/8x8-dq-aarch64-neon.S Line: 662 Change from: MOV V8.4s, V9.4s MOV V10.4s, V11.4s MOV V12.4s, V13.4s MOV V14.4s, V15.4s MOV V16.4s, V17.4s MOV V18.4s, V19.4s MOV V20.4s, V21.4s MOV V22.4s, V23.4s into: MOV V8.16b, V9.16b MOV V10.16b, V11.16b MOV V12.16b, V13.16b MOV V14.16b, V15.16b MOV V16.16b, V17.16b MOV V18.16b, V19.16b MOV V20.16b, V21.16b MOV V22.16b, V23.16b
4. Введите команду сборки и настройки.
python3 setup.py install
Вот и все. Теперь вы можете попробовать загрузить PyTorch и начать эксперименты по обучению нейросетей прямо с телефона!
Приятного кодирования в любом месте.