Поделиться через


Распределенное обучение

Azure Databricks рекомендует обучать нейронные сети на одном компьютере, если это возможно. Распределенный код для обучения и вывода будет более сложным, чем код для работы на одном компьютере, и работает медленнее из-за затрат на поддержание связи. Но распределенное обучение и вывод могут быть хорошим вариантом, если ваша модель и (или) данные слишком велики для размещения в памяти одного компьютера. Для этих рабочих нагрузок databricks Runtime ML включает пакеты TorchDistributor, Horovod и spark-tensorflow-распространителя.

Azure Databricks также предлагает распределенное обучение для моделей машинного обучения Spark с pyspark.ml.connect помощью модуля, см. в статье Обучение моделей машинного обучения Spark в Databricks Connect с помощью pyspark.ml.connect.

Примечание.

Databricks не рекомендует выполнять распределенное обучение с несколькими узлами с использованием виртуальных машин серии NC из-за низкой производительности сети между узлами. Вместо этого используйте один узел с несколькими GPU или другой размер виртуальной машины GPU, например серию NCasT4_v3, которая поддерживает ускоренную работу сети.

Распространитель DeepSpeed

Распространитель DeepSpeed построен на основе TorchDistributor и является рекомендуемым решением для клиентов с моделями, которые требуют более высокой вычислительной мощности, но ограничены ограничениями памяти. DeepSpeed — это библиотека с открытым исходным кодом, разработанная корпорацией Майкрософт и предлагает оптимизированное использование памяти, снижение затрат на обмен данными и расширенный параллелизм конвейера. Дополнительные сведения о распределенной подготовке с помощью распространителя DeepSpeed

ФакелDistributor

TorchDistributor — это модуль с открытым исходным кодом в PySpark, который помогает пользователям выполнять распределенное обучение с помощью PyTorch в кластерах Spark, поэтому он позволяет запускать задания обучения PyTorch в качестве заданий Spark. Она инициализирует среду и каналы связи между работниками и использует команду torch.distributed.run CLI для выполнения распределенного обучения между рабочими узлами. Дополнительные сведения о распределенной подготовке с помощью TorchDistributor.

spark-tensorflow-distributor

spark-tensorflow-distributor — это нативный пакет с открытым кодом в TensorFlow для распределенного обучения с помощью TensorFlow в кластерах Spark. Дополнительные сведения о распределенной подготовке с помощью TensorFlow 2.

Луч

Ray — это платформа с открытым исходным кодом, которая специализируется на параллельной обработке вычислений для масштабирования рабочих процессов машинного обучения и приложений ИИ. Узнайте , что такое Ray в Azure Databricks?).

Horovod (не рекомендуется)

Внимание

Horovod и HorovodRunner теперь устарели и не будут предварительно установлены в Databricks Runtime 16.0 ML и более поздних версий. Для распределенного глубокого обучения Databricks рекомендует использовать TorchDistributor для распределенного обучения с PyTorch или tf.distribute.Strategy API для распределенного обучения с TensorFlow.

Платформа распределенного обучения Horovod предназначена для работы с TensorFlow, Keras и PyTorch. Azure Databricks поддерживает распределенное глубокое обучение с использованием HorovodRunner и пакета horovod.spark. Для приложений конвейера машинного обучения Spark, использующих Keras или PyTorch, вы можете применять API оценщика horovod.spark. См . Хоровод.