TorchNeuron реалізує нативну підтримку PyTorch та розподіленого навчання на AWS Trainium
Hugging Face та AWS анонсували TorchNeuron — бекенд PyTorch, що вмикає eager mode, torch.compile та нативні розподілені примітиви на чипах Trainium. Це збільшує підтримку топ-100 текстових архітектур 'з коробки' з 46% до 89%.

Чому це важливо
Тепер можна переносити навчання та інференс із GPU NVIDIA на дешевші інстанси Trainium за допомогою стандартних класів Hugging Face без підтримки обгорток Optimum Neuron.
TL;DR
- 01TorchNeuron робить бібліотеку Optimum Neuron непотрібною, перетворюючи Trainium на повноцінний пристрій PyTorch.
- 02Підтримка 100 найпопулярніших текстових архітектур 'з коробки' зросла з 46% до 89%.
- 03Скрипти файн-тюнінгу на базі TRL SFTTrainer створюють стандартні чекпоїнти, придатні для завантаження на будь-які GPU.
- 04Динамічні шейпи та асинхронне завантаження ваг у поточній версії бети необхідно вимикати вручну.
Ключові факти
- Доступність публічної бети
- 20 жовтня 2026 року
- Підтримка топ-100 текстових архітектур
- 89% (проти 46% у Optimum Neuron)
- Протестована конфігурація кластера
- 8 чипів Trainium2 (32 ядра NeuronCore, 1/2 trn2.48xlarge)
- Команда встановлення
- pip install torch-neuronx
Перехід від Optimum Neuron до нативного PyTorch
Дотепер запуск моделей Hugging Face на прискорювачах AWS Trainium залежав від бібліотеки optimum-neuron, що реалізовувала кастомні абстракції поверх PyTorch XLA. TorchNeuron інтегрується безпосередньо в ядро PyTorch як бекенд акселератора. Це відкриває neuron як нативний пристрій із підтримкою eager execution, torch.compile і стандартних розподілених API на кшталт FSDP2 та DTensor.
Такий підхід суттєво розширив охоплення: 89% із топ-100 архітектур генерації тексту тепер працюють без додаткових модифікацій (проти 46% в optimum-neuron v0.4.5). Популярні моделі дифузії, такі як FLUX.1-dev, FLUX.2 та Qwen-Image-2.1, також підтримують тензорний паралелізм безпосередньо через Diffusers.
Розподілене навчання з SFTTrainer
Файн-тюнінг через TRL більше не потребує специфічних форків під Neuron. Паралелізм конфігурується у model_init_kwargs за допомогою DistributedConfig(tp_size=..., fsdp_size=...). Модель автоматично розподіляється за сіткою TP і FSDP під час завантаження ваг:
- Статичні шейпи: Автоматичні динамічні шейпи в Dynamo вимикаються через
torch._dynamo.config.automatic_dynamic_shapes = False. Послідовності доповнюються до кратності 128 токенів у TRL ≥ 1.16 для повторного використання скомпільованого графа. - Компіляція одним прапорцем: Параметр
--torch_compile trueавтоматично підхоплює бекенд Neuron. - Вимкнення асинхронного завантаження: Потрібно встановити
HF_DEACTIVATE_ASYNC_LOAD=1, оскільки асинхронне читання ваг наразі не підтримується.
Запуск тренування на 8 чипах Trainium2 (32 ядра NeuronCore на інстансі trn2.48xlarge) виконується стандартною утилітою torchrun із прапорцем --nproc_per_node=32, TP_SIZE=4 та FSDP_SIZE=8. Збережені через trainer.save_model чекпоїнти є стандартними вагами Hugging Face, готовими до завантаження на звичайні GPU.
Спробуй за 2 хвилини
pip install torch-neuronx
# Distributed fine-tuning launch on 8 Trainium2 chips (32 cores)
TP_SIZE=4 FSDP_SIZE=8 HF_DEACTIVATE_ASYNC_LOAD=1 uv run torchrun --nproc_per_node=32 sft_neuron_example.pybash
✓ Коли використовувати
- Файн-тюнінг великих мовних моделей на AWS Trainium за допомогою стандартних скриптів TRL.
- Розгортання відритих моделей генерації тексту з тензорним паралелізмом на AWS інстансах trn2.
- Зменшення залежності тренувальних пайплайнів PyTorch від пропрієтарного стека NVIDIA CUDA.
✕ Коли НЕ варто
- Задачі, що вимагають автоматичних динамічних шейпів без падінгу послідовностей токенів.
- Інференс-пайплайни, які спираються на асинхронне завантаження ваг у Transformers.
- Робочі станції та хмарні провайдери без чипів AWS Trainium або Inferentia.
Що зробити сьогодні
- Встановіть бета-пакет через pip install torch-neuronx на інстансах AWS Trainium EC2.
- Оновіть скрипти навчання, замінивши класи Optimum Neuron на нативні transformers та TRL SFTTrainer.
- Додайте змінну оточення HF_DEACTIVATE_ASYNC_LOAD=1 у середовище запуску розподілених задач.