JAX - что это такое и с чем его едят?
В последнее время много новинок от Google и DeepMind выходит на JAX, вместо привычного PyTorch или TF.
JAX - это новая библиотека в мире машинного обучения (ML), которая обещает сделать программирование ML более интуитивным, структурированным и чистым.
Основная и единственная цель JAX - выполнение числовых операций в высокопроизводительной форме. Это означает, что синтаксис практически идентичен Numpy.
Одним из главных преимуществ JAX является то, что мы можем запускать одну и ту же программу без каких-либо изменений на аппаратных ускорителях, таких как GPU и TPU.
Другой важный момент - это скорость. JAX быстрее. Намного быстрее. Например перемножение двух матриц (1000,1000) в NumPy занимает ~50ms, а в JAX ~1.5ms (на GPU).
В библиотеку встроен автоград. JAX способен дифференцировать всевозможные функции python и NumPy, включая циклы, ветвления, рекурсии и многое другое.
Факторы, делающие JAX таким быстрым:
* ускоренная линейная алгебра (Accelerated Linear Algebra или XLA).
* Just in time compilation (jit) - способ выполнения компьютерного кода, который предполагает компиляцию программы - во время выполнения - а не перед выполнением.
* Репликация вычислений между устройствами с помощью pmap - еще одно преобразование, которое позволяет нам реплицировать вычисления на несколько ядер или устройств и выполнять их параллельно (p в pmap означает parallel).
И ещё много различных трюков и улучшений.
Ещё одной особенностью JAX (и возможно даже более важной чем скорость) является Pseudo-Random number generator. В отличие от NumPy или PyTorch, в JAX состояния случайности должны быть поданы пользователем в качестве аргумента (что делает JAX по умолчанию намного более воспроизводимым).
Ещё больше деталей и примеров кода
Официальный GitHub
#gpu #code #jax
В последнее время много новинок от Google и DeepMind выходит на JAX, вместо привычного PyTorch или TF.
JAX - это новая библиотека в мире машинного обучения (ML), которая обещает сделать программирование ML более интуитивным, структурированным и чистым.
Основная и единственная цель JAX - выполнение числовых операций в высокопроизводительной форме. Это означает, что синтаксис практически идентичен Numpy.
Одним из главных преимуществ JAX является то, что мы можем запускать одну и ту же программу без каких-либо изменений на аппаратных ускорителях, таких как GPU и TPU.
Другой важный момент - это скорость. JAX быстрее. Намного быстрее. Например перемножение двух матриц (1000,1000) в NumPy занимает ~50ms, а в JAX ~1.5ms (на GPU).
В библиотеку встроен автоград. JAX способен дифференцировать всевозможные функции python и NumPy, включая циклы, ветвления, рекурсии и многое другое.
Факторы, делающие JAX таким быстрым:
* ускоренная линейная алгебра (Accelerated Linear Algebra или XLA).
* Just in time compilation (jit) - способ выполнения компьютерного кода, который предполагает компиляцию программы - во время выполнения - а не перед выполнением.
* Репликация вычислений между устройствами с помощью pmap - еще одно преобразование, которое позволяет нам реплицировать вычисления на несколько ядер или устройств и выполнять их параллельно (p в pmap означает parallel).
И ещё много различных трюков и улучшений.
Ещё одной особенностью JAX (и возможно даже более важной чем скорость) является Pseudo-Random number generator. В отличие от NumPy или PyTorch, в JAX состояния случайности должны быть поданы пользователем в качестве аргумента (что делает JAX по умолчанию намного более воспроизводимым).
Ещё больше деталей и примеров кода
Официальный GitHub
#gpu #code #jax
OpenXLA Project
OpenAI Codex - просто чума!
Час назад, OpenAI провела лайв-демо своего нового API Codex, которое позволяет пользоваться их моделью для генерации кода. Было показано много прикольных применений типа автонаписания кода и даже игры на JavaScript. Но самое сладкое они оставили на конец.
У многих программ есть своё собственное API (например у Word). Так вот, Codeх способен к ним подключаться и напрямую управлять софтом. Например, в демо показано как с помощью одной голосовой команды можно удалить все лишние пробелы в вордовском документе или выделить жирным каждую 5ую строку!
Посмотреть презентацию можно тут: https://www.youtube.com/watch?v=SGUCcjHTmGY
#code #news #generative #nlp
Час назад, OpenAI провела лайв-демо своего нового API Codex, которое позволяет пользоваться их моделью для генерации кода. Было показано много прикольных применений типа автонаписания кода и даже игры на JavaScript. Но самое сладкое они оставили на конец.
У многих программ есть своё собственное API (например у Word). Так вот, Codeх способен к ним подключаться и напрямую управлять софтом. Например, в демо показано как с помощью одной голосовой команды можно удалить все лишние пробелы в вордовском документе или выделить жирным каждую 5ую строку!
Посмотреть презентацию можно тут: https://www.youtube.com/watch?v=SGUCcjHTmGY
#code #news #generative #nlp
Program Synthesis with Large Language Models
Авторы используют большие языковые модели для синтеза компьютерных программ, выполнения программ, решения математических задач и диалога с людьми для итеративного уточнения кода.
Модели могут решить 60% и 81% задач по программированию и математике, соответственно.
Оказалось что, большие модели не только решают проблемы, которые не могут решить меньшие модели, но и более надежно решают более простые проблемы, которые меньшие модели решают реже.
В статье разобранны различные аспекты работы с такими кодовыми моделями.
ArXiv
#code #generative #nlp
Авторы используют большие языковые модели для синтеза компьютерных программ, выполнения программ, решения математических задач и диалога с людьми для итеративного уточнения кода.
Модели могут решить 60% и 81% задач по программированию и математике, соответственно.
Оказалось что, большие модели не только решают проблемы, которые не могут решить меньшие модели, но и более надежно решают более простые проблемы, которые меньшие модели решают реже.
В статье разобранны различные аспекты работы с такими кодовыми моделями.
ArXiv
#code #generative #nlp
WebDataset
WebDataset - это реализация PyTorch Dataset (IterableDataset), обеспечивающая эффективный доступ к наборам данных, хранящимся в POSIX tar архивах, и использующая только последовательный/потоковый доступ к данным. Это дает существенное преимущество в производительности во многих вычислительных средах, и это очень важно для очень крупномасштабного обучения.
Хотя WebDataset масштабируется для решения очень больших задач, он также хорошо работает с небольшими наборами данных и упрощает создание, управление и распространение обучающих данных для глубокого обучения.
WebDataset реализует стандартный интерфейс PyTorch IterableDataset и работает с PyTorch DataLoader.
GitHub
#datasets #code #training
WebDataset - это реализация PyTorch Dataset (IterableDataset), обеспечивающая эффективный доступ к наборам данных, хранящимся в POSIX tar архивах, и использующая только последовательный/потоковый доступ к данным. Это дает существенное преимущество в производительности во многих вычислительных средах, и это очень важно для очень крупномасштабного обучения.
Хотя WebDataset масштабируется для решения очень больших задач, он также хорошо работает с небольшими наборами данных и упрощает создание, управление и распространение обучающих данных для глубокого обучения.
WebDataset реализует стандартный интерфейс PyTorch IterableDataset и работает с PyTorch DataLoader.
GitHub
#datasets #code #training
TorchRS
В репозитории реализованы в PyTorch популярные наборы данных и моделей в задачах дистанционного зондирования (обнаружение изменений, сверхразрешение изображений, классификация/сегментация растительного покрова, создание подписей к изображениям, аудиовизуальное распознавание и т.д.) для различных оптических (Sentinel-2, Landsat и т.д.) и радиолокационных датчиков с синтезированной апертурой (SAR) (Sentinel-1).
GitHub
#ScientificML #images #code #datasets
В репозитории реализованы в PyTorch популярные наборы данных и моделей в задачах дистанционного зондирования (обнаружение изменений, сверхразрешение изображений, классификация/сегментация растительного покрова, создание подписей к изображениям, аудиовизуальное распознавание и т.д.) для различных оптических (Sentinel-2, Landsat и т.д.) и радиолокационных датчиков с синтезированной апертурой (SAR) (Sentinel-1).
GitHub
#ScientificML #images #code #datasets
Facebook CodeGen
В репозитории представлен набор инструментов для машинного обучения на языках программирования. Он реализует токенизацию, предварительную обработку датасета, обучение модели и оценку модели.
Предоставлен эталонные реализации следующих работ:
DOBF: A Deobfuscation Pre-Training Objective for Programming Languages (2021)
TransCoder: Unsupervised Translation of Programming Languages (2020)
Также есть предобученные модели для языкового моделирования, перевода и деобфускации.
GitHub
#code
В репозитории представлен набор инструментов для машинного обучения на языках программирования. Он реализует токенизацию, предварительную обработку датасета, обучение модели и оценку модели.
Предоставлен эталонные реализации следующих работ:
DOBF: A Deobfuscation Pre-Training Objective for Programming Languages (2021)
TransCoder: Unsupervised Translation of Programming Languages (2020)
Также есть предобученные модели для языкового моделирования, перевода и деобфускации.
GitHub
#code
Papers with code - сайт-сообщество. В первую очередь знаменит своими лидер-бордами, где можно посмотреть State-of-the-art (SOTA) практически по любой задаче машинного обучения и датасету (например ImageNet).
К большинству статей прилагается код (часто официальная версия и не официальные релизы).
Paperswithcode.com
#basics #ScientifcML #code
К большинству статей прилагается код (часто официальная версия и не официальные релизы).
Paperswithcode.com
#basics #ScientifcML #code
Быстрая "версия" pandas
Синтаксис очень красивый и более похож на dplyr/data.table из R, которые заслжуенно считаются SOTA для работы с табличными данными
GitHub
Введение
Кстати, по скорости исполнения может побеждать уже упомянутый гипер-быстрый data.table (не говоря о скорее синтаксически красивом dplyr )
Скорость достигается за счет написания "кишок" на Rust и за счет хороших архитектурных решений
#code #datascience #dataframes
Синтаксис очень красивый и более похож на dplyr/data.table из R, которые заслжуенно считаются SOTA для работы с табличными данными
GitHub
Введение
Кстати, по скорости исполнения может побеждать уже упомянутый гипер-быстрый data.table (не говоря о скорее синтаксически красивом dplyr )
Скорость достигается за счет написания "кишок" на Rust и за счет хороших архитектурных решений
#code #datascience #dataframes
GitHub
GitHub - pola-rs/polars: Dataframes powered by a multithreaded, vectorized query engine, written in Rust
Dataframes powered by a multithreaded, vectorized query engine, written in Rust - pola-rs/polars
Benchmarking graph neural networks for materials chemistry
Графовые нейронные сети (GNN) вызывают повышенный интерес как быстро растущий класс моделей машинного обучения, удивительно хорошо подходящих для применения в науке о материалах. На сегодняшний день предложено и продемонстрировано несколько успешных GNN для стабильности кристаллов, прогнозирования электронных свойств химией, гетерогенного катализа. Однако последовательная оценка этих моделей по-прежнему отсутствует.
Авторы представляют рабочий процесс и платформу тестирования MatDeepLearn для быстрой и воспроизводимой оценки и сравнения GNNs и других моделей машинного обучения. Они используют эту платформу для оптимизации и оценки ряда наиболее эффективных GNN на нескольких репрезентативных наборах данных в области вычислительной химии материалов. В то же время, в работе, отмечаются и некоторые недостатки GNN и обсуждаются предложения по их совершенствованию для применения в химии материалов.
Статья
Код
#ScientificML #code #chemistry
Графовые нейронные сети (GNN) вызывают повышенный интерес как быстро растущий класс моделей машинного обучения, удивительно хорошо подходящих для применения в науке о материалах. На сегодняшний день предложено и продемонстрировано несколько успешных GNN для стабильности кристаллов, прогнозирования электронных свойств химией, гетерогенного катализа. Однако последовательная оценка этих моделей по-прежнему отсутствует.
Авторы представляют рабочий процесс и платформу тестирования MatDeepLearn для быстрой и воспроизводимой оценки и сравнения GNNs и других моделей машинного обучения. Они используют эту платформу для оптимизации и оценки ряда наиболее эффективных GNN на нескольких репрезентативных наборах данных в области вычислительной химии материалов. В то же время, в работе, отмечаются и некоторые недостатки GNN и обсуждаются предложения по их совершенствованию для применения в химии материалов.
Статья
Код
#ScientificML #code #chemistry
Accelerate PyTorch models with ONNX Runtime
ONNX Runtime for PyTorch ускоряет обучение моделей PyTorch с помощью ONNX Runtime.
Он доступен через пакет torch-ort python. ONNX Runtime for PyTorch дает вам возможность ускорить обучение больших трансформеров. Время и стоимость обучения сокращаются всего лишь за счет изменения одной строки кода.
GitHub
#code #training #speed
ONNX Runtime for PyTorch ускоряет обучение моделей PyTorch с помощью ONNX Runtime.
Он доступен через пакет torch-ort python. ONNX Runtime for PyTorch дает вам возможность ускорить обучение больших трансформеров. Время и стоимость обучения сокращаются всего лишь за счет изменения одной строки кода.
GitHub
#code #training #speed
This media is not supported in your browser
VIEW IN TELEGRAM
TorchIO
TorchIO - это библиотека для эффективного чтения, предварительной обработки, выборки, дополнения и записи 3D медицинских изображений в приложениях глубокого обучения, написанных на PyTorch, включая преобразования интенсивности и пространственные преобразования для дополнения и предварительной обработки данных. Преобразования включают типичные операции компьютерного зрения, такие как рандомные аффинные преобразования, а также специфические для данной области, такие как моделирование артефактов интенсивности из-за неоднородности магнитного поля МРТ или артефактов движения в k-пространстве.
Сайт
GitHub
Статья
#code #medicine #images #3d #ScientificML
TorchIO - это библиотека для эффективного чтения, предварительной обработки, выборки, дополнения и записи 3D медицинских изображений в приложениях глубокого обучения, написанных на PyTorch, включая преобразования интенсивности и пространственные преобразования для дополнения и предварительной обработки данных. Преобразования включают типичные операции компьютерного зрения, такие как рандомные аффинные преобразования, а также специфические для данной области, такие как моделирование артефактов интенсивности из-за неоднородности магнитного поля МРТ или артефактов движения в k-пространстве.
Сайт
GitHub
Статья
#code #medicine #images #3d #ScientificML
Torch Inferenece Mode
Хотите, чтобы ваши модели в PyTorch работали быстрее на инференсе? Вот как это сделать.
Замените `torch.no_grad()` на ✨`torch.inference_mode()`✨
В то время как NoGrad отключает операции отслеживания Автограда, InferenceMode делает это на два шага вперед, потенциально ускоряя ваш код (YMMV в зависимости от сложности модели и аппаратного обеспечения).
Обратите внимание, что наибольшее ускорение достигается для легких операций, узким местом которых являются накладные расходы на отслеживание.
❗Если операции достаточно сложные, отключение отслеживания с помощью InferenceMode не дает большого ускорения; например, использование InferenceMode на ResNet101 forward
#inference #code
Хотите, чтобы ваши модели в PyTorch работали быстрее на инференсе? Вот как это сделать.
Замените `torch.no_grad()` на ✨`torch.inference_mode()`✨
inference_mode()
- это torch.no_grad()
на стероидах.В то время как NoGrad отключает операции отслеживания Автограда, InferenceMode делает это на два шага вперед, потенциально ускоряя ваш код (YMMV в зависимости от сложности модели и аппаратного обеспечения).
Обратите внимание, что наибольшее ускорение достигается для легких операций, узким местом которых являются накладные расходы на отслеживание.
❗Если операции достаточно сложные, отключение отслеживания с помощью InferenceMode не дает большого ускорения; например, использование InferenceMode на ResNet101 forward
#inference #code