Termux – это полноценный эмулятор терминала Linux для Android, позволяющий запускать практически любые инструменты командной строки. При работе с задачами машинного обучения (ML) важно обеспечить максимальную производительность системы, иначе обучение моделей может стать неприемлемо медленным. В этой статье рассматриваются проверенные методы оптимизации процессора, памяти, хранилища и Python‑окружения в Termux.
Выбор и подготовка оборудования
Не все Android‑устройства одинаково подходят для ML‑задач. При выборе устройства обратите внимание на следующие параметры:
- Многоядерный процессор (не менее 4‑ядерного, предпочтительно ARM v8.2 или новее).
- Объём оперативной памяти – минимум 4 ГБ, лучше 6‑8 ГБ.
- Наличие быстрой встроенной SSD‑памяти (UFS 2.1/3.0) вместо eMMC.
- Поддержка 64‑битных инструкций (ARM64).
Если устройство уже в использовании, проверьте, что в настройках энергосбережения отключён режим «экономия батареи», так как он ограничивает частоту процессора.
Оптимизация процессора
Большинство библиотек ML (NumPy, SciPy, PyTorch) используют OpenMP для многопоточной работы. Установите переменную окружения OMP_NUM_THREADS, чтобы задать количество активных ядер:
export OMP_NUM_THREADS=$(nproc)
Для более тонкой настройки можно ограничить количество потоков в конкретных библиотеках:
export MKL_NUM_THREADS=2
export OPENBLAS_NUM_THREADS=2
Если ваш процессор поддерживает динамическое масштабирование частоты (CPU‑frequency scaling), отключите режим «powersave»:
su -c "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
Обратите внимание, что команда требует root‑доступа. При отсутствии root‑прав используйте termux-wake-lock, чтобы предотвратить переход устройства в спящий режим.
Эффективное управление памятью
Для больших моделей часто не хватает оперативной памяти. В Termux можно создать swap‑файл, который будет использовать часть внутренней памяти устройства.
# Создаём файл размером 1 ГБ
dd if=/dev/zero of=$HOME/swapfile bs=1M count=1024
chmod 600 $HOME/swapfile
mkswap $HOME/swapfile
swapon $HOME/swapfile
Для автоматического включения swap при запуске Termux добавьте команды в файл ~/.bashrc или ~/.zshrc. Не забывайте отключать swap после завершения работы, чтобы избежать износа флеш‑памяти:
swapoff $HOME/swapfile
Настройка хранилища
Быстрый доступ к данным критичен при обучении. Рекомендуется хранить датасеты на внутренней памяти устройства, а не на SD‑карте, если карта медленная. Можно смонтировать директорию с данными в более быстрый путь с помощью символических ссылок:
ln -s /data/data/com.termux/files/home/datasets /sdcard/datasets
Если работаете с большими наборами, используйте форматы, поддерживающие потоковое чтение (например, TFRecord или HDF5).
Оптимизация Python‑окружения
Базовый пакет Python уже предустановлен в Termux, но для ML‑задач необходимо установить дополнительные библиотеки, собранные с поддержкой ускорения.
# Обновляем пакетный менеджер
pkg update -y && pkg upgrade -y
# Устанавливаем необходимые зависимости
pkg install -y python clang make git wget unzip
# Устанавливаем OpenBLAS (быстрая линейная алгебра)
pkg install -y libopenblas
# Устанавливаем pip и необходимые пакеты
pip install --upgrade pip
pip install numpy scipy pandas matplotlib
# Устанавливаем PyTorch для ARM64 (CPU‑only)
pip install torch==2.1.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
Для ускорения работы NumPy убедитесь, что он использует OpenBLAS. Это можно проверить командой:
python -c "import numpy; print(numpy.config.show())"
Если OpenBLAS не используется, переустановите NumPy с указанием переменной BLAS:
PIP_NO_BINARY=:all: pip install --no-binary :all: numpy
Контейнеризация и изоляция
Для лёгкой смены окружений удобно использовать proot-distro. Он позволяет запускать полноценные дистрибутивы Linux (Ubuntu, Debian) внутри Termux без root‑прав.
# Устанавливаем менеджер дистрибутивов
pkg install -y proot-distro
# Скачиваем Ubuntu 22.04
proot-distro install ubuntu-22.04
# Запускаем контейнер
proot-distro login ubuntu-22.04
Внутри контейнера можно установить те же пакеты, но уже в привычной среде Debian/Ubuntu, что упрощает работу с системными зависимостями.
Мониторинг и профилирование
Отслеживание нагрузки поможет выявить узкие места.
- Команда
topилиhtop(устанавливается черезpkg install htop) показывает загрузку CPU и использование памяти. - Для детального профилирования Python‑кода используйте
cProfile:
python -m cProfile -s time your_script.py
Для анализа использования GPU (если подключён внешний USB‑GPU) можно применять nvidia-smi через termux-chroot, однако в большинстве мобильных сценариев используется только CPU.
Заключение
Оптимизация работы Termux для машинного обучения требует комплексного подхода: правильный выбор аппаратных ресурсов, настройка многопоточности, управление памятью и swap, ускорение доступа к данным, а также сборка оптимизированных Python‑библиотек. Следуя приведённым рекомендациям, вы сможете существенно сократить время обучения моделей даже на мобильных устройствах.
Профессиональные IT‑услуги в Рыбинске оказывает компания RybinskLab. Мы помогаем внедрять решения машинного обучения, оптимизировать инфраструктуру и развивать цифровые проекты под ключ.