Рубріки: Новости

Новый PyTorch получил стабильный модуль FFT

Богдан Мирченко

Состоялся релиз фреймворка машинного обучения PyTorch 1.8. В новой версии улучшены поддержка быстрого преобразования Фурье (FFT) и обучение распределенной модели, появились новые API-интерфейсы, обновились библиотеки и многое другое. 

Наиболее важным обновлением можно назвать стабильный модуль torch.fft. Он поддерживает высокопроизводительные быстрые преобразования Фурье в стиле модуля np.fft в NumPy, но с поддержкой аппаратного ускорения и автоградацией. В предыдущих версиях torch.fft был отдельной функцией.

Другие улучшения API включают новые функции линейной алгебры, поддержку автоградации для сложных тензоров и повышение производительности для вычисления гессиан функций и якобианов. Разработчики заявляют, что значительные обновления и улучшения внесены в распределенное обучение. Эти повышает надежность NCCL, добавляет поддержку конвейерного параллелизма и профилирования RPC.

В режиме бета Python 1.8 получил утилиты для тестирования производительности Benchmark. Они позволяют проводить точные измерения и дают инструменты, помогающие с анализом тестов и их последующей обработкой. Создатели фреймворка надеются, что это поможет разработчикам PyTorch быстро понять, как их действия влияют на производительность.

 Например:

from torch.utils.benchmark import Timer

results = []
for num_threads in [1, 2, 4]:
    timer = Timer(
        stmt="torch.add(x, y, out=out)",
        setup="""
            n = 1024
            x = torch.ones((n, n))
            y = torch.ones((n, 1))
            out = torch.empty((n, n))
        """,
        num_threads=num_threads,
    )
    results.append(timer.blocked_autorange(min_run_time=5))
    print(
        f"{num_threads} thread{'s' if num_threads > 1 else ' ':<4}"
        f"{results[-1].median * 1e6:>4.0f} us   " +
        (f"({results[0].median / results[-1].median:.1f}x)" if num_threads > 1 else '')
    )

1 thread     376 us   
2 threads    189 us   (2.0x)
4 threads     99 us   (3.8x)

Разработчики обновили ряд функций для улучшения совместимости с NumPy. К ним, например, относится модуль torch.linalg, созданный по образцу модуля np.linalg. Он обеспечивает поддержку общих операций линейной алгебры в стиле NumPy, в том числе — разложение Холецкого и детерминанты.

С новой версией команда  PyTorch также выпустила основные обновления библиотек, включая TorchSPRNG, TorchVision, TorchText и TorchAudio.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024