На девятом техническом салоне по компиляторам Meet AI Compiler, который проходил 1 августа под эгидой HyperAI, архитектор AscendNPU IR компании Huawei, Хай Лицзюань, представил AscendNPU IR. Эта открытая основа компиляции обеспечивает многоязычный доступ к платформе Ascend.
Спикеры из Пекинской академии искусственного интеллекта, команды TileRT, Tencent, Huawei и Zhiyuan Innovation обсудили эволюцию AI-компиляторов, охватывая языковое выражение, вычисления операторов, выполнение инференса и развертывание сценариев.
Программирование с использованием Triton отличается высокой эффективностью благодаря синтаксису, схожему с Python, и блочному тайловому программированию. Этот подход избавляет разработчиков от необходимости разбираться в низкоуровневых деталях, таких как инструкции, конвейеры и память на кристалле, тем самым снижая порог входа для разработки операторов. Модель тайлов позволяет сосредоточиться на абстракции тензорных операций и разделении данных, при этом управление общей памятью и объединение памяти автоматизируются.
Диалекты Triton и официальный компилятор Triton GPU построены на многоуровневых абстракциях IR, которые оптимизированы для различных аппаратных платформ. AscendNPU IR представляет собой тайловую абстракцию на основе MLIR для оборудования Ascend, которая служит основой для оптимизации компиляции. Она соединяется вниз с LLVM IR и компилируется в бинарные файлы Ascend, в то время как сторонние языки и компиляторы, например Triton, могут подключаться вверх для адаптации к Ascend.
Ключевые особенности включают нисходящую абстракцию ресурсов на кристалле, включая блоки данных и память, а также абстрактные операции на уровне тайлов с поддержкой архитектур A2/A3 до архитектур SIMD и SIMT Ascend 950. Первая генерация архитектуры имела два уровня: аппаратно-независимый слой HFusion для оптимизации многомерного слияния и аппаратно-зависимый слой HIVM, отвечающий за сопоставление ядра, сопоставление памяти на кристалле и сопоставление процессорных блоков.
Сопоставление ядра автоматически назначает векторные и кубические операции соответствующим ядрам, управляя обменом данными, синхронизацией и рабочим пространством, а также оптимизирует конвейер CV. Сопоставление памяти определяет логические тензоры в физическую память, включая форматы фрактальных матриц, специфичные для кубов, тогда как сопоставление процессорных блоков обеспечивает векторизацию для высокопроизводительных инструкций.
Архитектура претерпела изменения при переходе от A2/A3 к Ascend 950 текущего года: HFusion осталась стабильной, в то время как HIVM расширился от SIMD на основе памяти до SIMD и SIMT на основе регистров, а компиляция CV-слияния теперь использует тесное взаимодействие на кристалле вместо обмена данными между кубовыми и векторными ядрами через глобальную память. Новые функции включают улучшенный анализ InsertCVLoadStore для сложного потока управления, MultiBuffer с независимым счетчиком буфера для циклов while и вложенных потоков управления, AutoBlockify для объединения логических ядер в циклы for, CV Pipeline для конвейеризации куб-векторного типа flash-attention и CV 1:2 splitting, где два векторных ядра обрабатывают половину данных против одного кубового ядра.
Triton-Ascend и AscendNPU IR теперь открыты для совместной разработки. Сообщество Ascend запустило стажировки и задачи сообщества с открытым исходным кодом; каждый разработчик может взять одну задачу за раз с вознаграждением. Для тех, у кого нет среды Ascend, сообщество предоставляет бесплатную вычислительную платформу Ascend HiDevLab, где разработчики могут зарегистрироваться и получить 100 бесплатных часов вычислительного времени.


