1 В избранное 0 Ответвления 0

GITHUB-MIRROR/MooreThreads-torch_musa

08.02.2025 17:26
GitLife Service Account

Примечания к выпуску torch_musa

  • Основные моменты
  • Новые функции
    • Портинг CUDA ядер
    • Кэширующий аллокатор
    • Управление устройствами
    • Распределённое обучение с параллельным проходом данных [Экспериментальная]
    • FP16 вывод [Экспериментальная]
  • Поддерживаемые операторы
  • Поддерживаемые модели
  • Документация
  • Docker образы

Основные моменты

Мы рады представить версию torch_musa v1.0.0, основанную на PyTorch v2.0.0. В этом выпуске мы поддерживаем ряд базовых и важных функций, включая портинг CUDA ядер, управление устройствами, аллокатор памяти, распределённое обучение с параллельным проходом данных (экспериментальная) и вывод FP16 (экспериментальная). Кроме того, мы адаптировали более 300 операторов. С этими базовыми функциями и операторами torch_musa может поддерживать большое количество моделей в различных областях, включая недавно популярные большие языковые модели. Количество поддерживаемых операторов и моделей быстро растёт. С помощью torch_musa пользователи могут легко ускорять приложения ИИ на графических картах Moore Threads.

Этот выпуск стал возможен благодаря усилиям инженеров команды AI Moore Threads и других отделов. Мы искренне надеемся, что все продолжат следить за нашими работами и участвовать в них, чтобы вместе наблюдать за быстрыми обновлениями torch_musa и графических карт Moore Threads.

Новые функции

Портинг CUDA ядер

Благодаря совместимости с CUDA нашего MUSA программного стека, torch_musa легко поддерживает совместимые с CUDA модули. Это позволяет разработчикам переиспользовать CUDA ядра с минимальными усилиями, что значительно ускоряет адаптацию операторов.

Кэширующий аллокатор

Количество требуемой памяти постоянно меняется во время выполнения программы. Частые вызовы выделения и освобождения памяти (через musaMalloc и musaFree) обычно приводят к высоким затратам на выполнение. Для устранения этой проблемы мы реализовали кэширующий аллокатор, который запрашивает блоки памяти от MUSA и стратегически разделяет и переиспользует эти блоки без их возврата к MUSA, что приводит к значительному повышению производительности.

Управление устройствами

Для управления устройствами в torch_musa реализованы три компонента: потоки устройства, события устройства и генераторы устройства. Потоки устройства используются для управления и синхронизации запущенных ядер. Событие устройства — важный компонент, связанный с потоками, который фиксирует определённую точку в выполнении потока. Генераторы устройства используются для генерации случайных чисел. Устройства инициализируются лениво, что может улучшить запуск особенно для систем с несколькими GPU.

Распределённое обучение с параллельным проходом данных [Экспериментальная]

По мере увеличения числа параметров модели, особенно для больших языковых моделей, распределённое обучение с параллельным проходом данных становится всё более важным. torch_musa уже начал поддерживать распределённое обучение с параллельным проходом данных. Поддерживаются некоторые важные примитивы коммуникации, включая send, recv, broadcast, all_reduce, reduce, all_gather, gather, scatter, reduce_scatter и barrier. Также поддерживается интерфейс torch.nn.parallel.DistributedDataParallel. Этот модуль находится на стадии быстрого развития.

FP16 вывод [Экспериментальная]

Чтобы ускорить вывод модели, мы уже поддерживаем серию операторов FP16, включая linear, matmul, unary ops, binary ops, layernorm и большинство портированных ядер. С этими операторами мы можем выполнять вывод FP16 на ряд моделей. Пожалуйста, обратите внимание, что эта функция всё ещё находится в стадии экспериментов, поддержка моделей может быть ограничена.

Поддерживаемые операторы

В torch_musa поддерживается более 300 операторов.

Поддерживаемые модели

Многие классические и популярные модели уже поддерживаются, включая Stable Diffusion, ChatGLM, Conformer, Bert, YOLOV5, ResNet50, Swin-Transformer, MobileNetv3, EfficientNet, HRNet, TSM, FastSpeech2, UNet, T5, HifiGan, Real-EsrGan, OpenPose и многие варианты GPT.

Документация

Мы предоставляем руководство для разработчиков, которое подробно описывает подготовку среды разработки и некоторые шаги разработки.

Docker образы

Теперь доступны образы релиза и образы разработки.

[ВАЖНО]: Если вы хотите собрать torch_musa без использования предоставленного docker образа, пожалуйста, свяжитесь с нами по электронной почте developers@mthreads.com, чтобы получить необходимые зависимости.

Последнее сообщение коммита: [MTAI] doc(version.txt): modify version to v1.0.0 (#4)
08.02.2025 17:20
GitLife Service Account

Примечания к выпуску torch_musa

  • Основные моменты
  • Новые функции
    • Обучение с использованием AMP (mixed precision training)
    • MUSAExtension
    • Закрепленная память (pinned memory)
    • Вычисления с использованием TensorCore
    • CompareTool [Экспериментальный]
  • Поддерживаемые операторы
  • Документация
  • Docker образы

Основные моменты

Мы рады представить torch_musa v1.1.0, основанную на PyTorch v2.0.0. В этом выпуске мы добавили поддержку для важных функций, включая AMP mixed precision training, MUSAExtension, вычисления с использованием TensorCore, закрепленная память и CompareTool. Кроме того, мы адаптировали более 470 операторов, улучшили модуль DDP и реализовали больше операторов для квантизации. С torch_musa пользователи могут легко ускорить приложения AI на графических картах Moore Threads.

Этот выпуск стал возможен благодаря усилиям инженеров команды AI Moore Threads и других отделов. Мы искренне надеемся, что все продолжат следить за нашими работами и участвовать в них, чтобы вместе наблюдать за быстрыми обновлениями torch_musa и графических карт Moore Threads.

Новые функции

Обучение с использованием AMP (mixed precision training)

Теперь мы поддерживаем обучение с использованием mixed precision для BF16 и FP16. Однако стоит отметить, что S80 и S3000 поддерживают только fp16, в то время как S4000 поддерживает как fp16, так и bf16, и интерфейс полностью совместим с PyTorch. Пользователи могут использовать AMP следующим образом:

# low_dtype может быть torch.float16 или torch.bfloat16
def train_in_amp(low_dtype=torch.float16):
    set_seed()
    model = SimpleModel().to(DEVICE)
    criterion = nn.MSELoss()
    optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

    # создание объекта scaler
    scaler = torch.musa.amp.GradScaler()

    inputs = torch.randn(6, 5).to(DEVICE)  # Перемещение данных на GPU
    targets = torch.randn(6, 3).to(DEVICE)
    for step in range(20):
        optimizer.zero_grad()
        # создание окружения autocast
        with torch.musa.amp.autocast(dtype=low_dtype):
            outputs = model(inputs)
            assert outputs.dtype == low_dtype
            loss = criterion(outputs, targets)

        scaler.scale(loss).backward()
        scaler.step(optimizer)
        scaler.update()
    return loss

MUSAExtension

MUSAExtension и CUDAExtension в основном одинаковы, за исключением того, что для MUSAExtension необходимо добавить динамическую библиотеку в путь поиска динамических библиотек. Для подробного использования обратитесь к torch_musa/torch_musa/utils/README.md и документации разработчика developer documentation. Эта проблема будет решена в следующем выпуске.

Закрепленная память (pinned memory)

Теперь torch_musa поддерживает закрепленную память, следующий код может использовать её.

cpu_tensor = torch.rand(shape, dtype=torch.float32).pin_memory("musa")
gpu_tensor = cpu_tensor.to("musa", non_blocking=True)

Вычисления с использованием TensorCore

S4000 имеет TensorCore, поэтому поддерживает вычисления в формате TF32. Пользователи могут использовать TF32 для ускорения следующим образом:

with torch.backends.mudnn.flags(allow_tf32=True):
      # ваш код обучения.

CompareTool [Экспериментальный]

CompareTool — это экспериментальный инструмент, предназначенный для автоматического сравнения результатов вычислений между musa и cpu, что облегчает процесс отладки. Для подробного использования обратитесь к torch_musa/utils/README.md

Поддерживаемые операторы

В torch_musa поддерживается более 470 операторов.

Документация

Мы предоставляем руководство разработчика для разработчиков, которое подробно описывает подготовку среды разработки и некоторые шаги разработки.

Docker образы

Теперь доступны образы релиза и образы разработки.

[ВАЖНО]: Если вы хотите собрать torch_musa без использования предоставленного образа Docker, пожалуйста, скачайте стек программного обеспечения rc2.0.0 Intel CPU_Ubuntu с https://developer.mthreads.com/sdk/download/musa?equipment=&os=&driverVersion=&version=

[ВАЖНО]:

- При установке выпущенного whl пакета, пожалуйста, удалите имя устройства. Например,
- pip install torch-2.0.0-cp310-cp310-linux_x86_64.whl
Последнее сообщение коммита: Merge pull request #8from MooreThreads/update_doc
08.02.2025 17:15
GitLife Service Account

"выпускается" для полноты перевода.)

Основные изменения

Мы рады представить версию torch_musa v1.2.1, основанную на PyTorch v2.0.0. В этой версии мы поддерживаем ряд базовых и важных функций, включая torch_musa profiler, musa_extension, musa_convert, codegen и compare_tool. Кроме того, теперь насчитывается более 600 адаптированных операторов. С этими базовыми функциями и операторами torch_musa может поддерживать большое количество моделей в различных областях, включая недавно популярные большие языковые модели. Количество поддерживаемых операторов и моделей быстро растет. С помощью torch_musa пользователи могут легко ускорять приложения AI на графических картах Moore Threads.

Этот выпуск стал возможен благодаря усилиям инженеров команды AI Moore Threads и других отделений. Мы искренне надеемся, что все продолжат следить за нашими работами и участвовать в них, вместе наблюдая за быстрыми обновлениями torch_musa и графических карт Moore Threads.

Новые функции

torch_musa profiler

Мы адаптировали официальный инструмент анализа производительности PyTorch, torch.profiler. Пользователи могут использовать этот адаптированный инструмент для анализа деталей производительности обучения или вывода моделей PyTorch на платформе MUSA. Он может захватывать информацию о вызываемых операторах на уровне хоста или ядрах, выполняемых на GPU.

musa_extension

Мы реализовали интерфейс MUSAExtension, который совместим с CUDAExtension. Этот интерфейс можно использовать для построения пользовательских операторов на основе платформы MUSA, что позволяет полностью использовать ресурсы GPU для ускорения вычислений. Многие сторонние библиотеки PyTorch, использующие CUDAExtension, также могут быть легко перенесены на платформу MUSA.

musa_convert

Мы разработали инструмент перевода под названием musa_converter, который переводит строки и API связанные с CUDA в код, совместимый с torch_musa. Это повышает эффективность миграции моделей с платформы CUDA на MUSA. Пользователи могут запустить musa_convert -h, чтобы увидеть использование инструмента musa_converter.

codegen

Мы представляем модуль codegen для автоматического связывания и регистрации пользовательских ядер MUSA. Он расширяет возможности torchgen, следует формату файлов native_functions.yaml и поддерживает различные стратегии настройки, что значительно снижает нагрузку разработчиков.

compare_tool

Этот инструмент предназначен для улучшения процесса отладки и проверки моделей PyTorch за счет предоставления возможностей сравнения операций с тензорами между устройствами, отслеживания иерархий модулей и обнаружения наличия NaN/Inf значений. Он направлен на обеспечение правильности и стабильности моделей через различные этапы разработки и тестирования.

operator_benchmark

Мы следовали PyTorch operator_benchmark и адаптировали его для torch_musa. Разработчики могут использовать его так же, как в PyTorch. Это помогает разработчикам генерировать полное описание производительности оператора, и они могут сравнивать результаты с теми, которые были получены от CUDA или других ускоряющих бэкендов, постоянно повышая производительность torch_musa.

Улучшения

Поддержка операторов

  1. Поддержка операторов включает torch.mode, torch.count_nonzero, torch.sort(stable=True), torch.upsample2d/3d, torch.logical_or/and и т.д.

  2. Добавлена поддержка дополнительных типов данных для torch.scatter, torch.eq, torch.histc, torch.logsumexp и т.д.

Оптимизация операторов и модулей

  1. Улучшены и ускорены операторы, такие как ядра индексирования, ядра встраивания, torch.nonzero, torch.unique, torch.clamp и т.д.

  2. Добавлена возможность установки ручного seed для слоя dropout.

  3. Поддержка SDP (scale-dot production) с GQA (grouped-query attention) и причинным маской.

  4. Теперь использование AMP совпадает с CUDA, так как torch.autocast автоматически включает torch_musa amp.

Документация

Мы предоставляем документацию для разработчиков, которая подробно описывает подготовку среды разработки и некоторые шаги разработки.

Docker-образы

Мы предоставляем релизный docker-образ и docker-образ для разработки.

Последнее сообщение коммита: Merge pull request #55 from MooreThreads/sync_with_inner
08.02.2025 17:08
GitLife Service Account

поэтому я добавил слово "выпускается" для улучшения смысла.)

Основные изменения

Мы рады представить версию torch_musa v1.3.0, основанную на PyTorch v2.2.0. В этой версии мы поддерживаем FSDP (Fully Sharded Data Parallel) для обучения больших моделей и улучшаем стабильность и эффективность различных операторов. В целом, мы добавляем больше операторов и поддержку большего числа типов данных Tensors для многих операторов на нашей платформе MUSA.

С помощью torch_musa v1.3.0 пользователи могут использовать большинство функций, выпущенных в PyTorch v2.2.0, на GPU MUSA и получать более стабильное обучение и инференс для различных моделей во многих областях, включая недавно популярные большие языковые модели.

Количество поддерживаемых операторов и моделей быстро растет. С torch_musa пользователи могут легко ускорять приложения AI на графических картах Moore Threads.

Этот выпуск стал возможным благодаря усилиям инженеров команды AI Moore Threads и других отделов. Мы искренне надеемся, что все продолжат следить за нашими работами и участвовать в них, чтобы вместе наблюдать за быстрыми обновлениями torch_musa и графических карт Moore Threads.

Улучшения

FSDP

Мы рекомендуем пользователям обратиться к официальной документации FSDP для получения дополнительных сведений о использовании, а затем вернуться в наш torch_musa, чтобы получить те же возможности, что и в оригинальной версии.

Поддержка операторов

  1. Поддержка операторов, включая torch.conv_transpose_3d, torch.fmod, torch.fmax и torch.fmin.

  2. Поддержка большего числа типов данных для torch.sort, torch.unique и других.

Документация

Мы предоставляем документацию для разработчиков, которая подробно описывает подготовку среды разработки и некоторые шаги разработки.

Docker-образы

Мы предоставляем Docker-образ для выпуска и Docker-образ для разработки.

Последнее сообщение коммита: Merge pull request #60 from MooreThreads/fmo-1.3.0-update
1
https://api.gitlife.ru/github-mirror/MooreThreads-torch_musa.git
git@api.gitlife.ru:github-mirror/MooreThreads-torch_musa.git
github-mirror
MooreThreads-torch_musa
MooreThreads-torch_musa