Ранее я писал в блоге о том, как собрать и установить Tensorflow в среде Android Termux здесь:

https://medium.com/analytics-vidhya/developing-tensorflow-on-android-phone-cfc4297b676e

На этот раз настала очередь PyTorch. К счастью, процесс настройки PyTorch довольно прост по сравнению с Tensorflow. Не существует такой сложной системы сборки, как JVM/Bazel. Все, что вам нужно, это cmake вместе с некоторой модификацией ассемблерного кода ARM, после чего все готово.

И. Предпосылки

Обратите внимание: если вы уже следили за моим последним блогом об установке Tensorflow внутри Termux, вы можете пропустить этот обязательный раздел.

  1. Установите Termux из Google PlayStore.
  2. Запустите Термукс.
  3. Убедитесь, что Termux обновлен: pkg upgrade
  4. Установите wget и root: pkg install wget proot
  5. Создайте каталог для установки Ubuntu: mkdir ubuntu && cd ubuntu
  6. Загрузите сценарий установки Ubuntu chroot: wget https://raw.githubusercontent.com/Neo-Oli/termux-ubuntu/master/ubuntu.sh
  7. Запустите скрипт установки: 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.

  1. Клонируйте 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 и начать эксперименты по обучению нейросетей прямо с телефона!

Приятного кодирования в любом месте.