Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматриваются сведения о загрузке данных на бессерверные графические вычислительные ресурсы GPU специально для приложений машинного и глубокого обучения. Ознакомьтесь с руководством , чтобы узнать больше о том, как загружать и преобразовывать данные с помощью API Python Spark.
Загрузка табличных данных
Используйте Spark Connect для загрузки табличных данных машинного обучения из таблиц Delta.
Для обучения с одним узлом можно преобразовать Apache Spark DataFrames в pandas DataFrames с помощью метода PySpark, а затем при необходимости преобразовать в формат NumPy с помощью метода toPandas()to_numpy().
Замечание
Spark Connect откладывает анализ и разрешение имен во время выполнения, что может изменить поведение кода. См . статью "Сравнение Spark Connect с классической версией Spark".
Spark Connect поддерживает большинство API PySpark, включая Spark SQL, Pandas API в Spark, Structured Streaming и MLlib (на базе DataFrame). См. справочную документацию по API PySpark для последних поддерживаемых API.
Сведения о других ограничениях см. в разделе об ограничениях бессерверных вычислений.
Загрузка данных внутри @distributed декоратора
При использовании безсерверного API GPU для распределенного обучения переместите код загрузки данных в декоратор @distributed. Размер набора данных может превышать максимальный размер, разрешенный пикл, поэтому рекомендуется генерировать набор данных внутри декоратора, как показано ниже:
from serverless_gpu import distributed
# this may cause pickle error
dataset = get_dataset(file_path)
@distributed(gpus=8, remote=True)
def run_train():
# good practice
dataset = get_dataset(file_path)
....
Производительность загрузки данных
/Workspace и /Volumes размещаются в удаленном хранилище каталога Unity. Если набор данных хранится в каталоге Unity, скорость загрузки данных ограничена доступной пропускной способностью сети. Если вы обучаете несколько эпох, рекомендуется сначала скопировать данные локально, в частности в каталог /tmp, размещенный на очень быстром хранилище с использованием NVMe SSD-дисков.
Если набор данных большой, рекомендуется также использовать следующие методы для параллелизации обучения и загрузки данных:
- При обучении нескольких эпох обновите набор данных для кэширования файлов локально в каталоге
/tmpперед чтением каждого файла. В последующих эпохах используйте кэшированную версию. - Параллелизуйте получение данных, включая воркеры в API Torch DataLoader. Установите
num_workersзначение не менее 2. По умолчанию каждый рабочий поток предварительно загружает два задания. Чтобы повысить производительность, увеличьтеnum_workers(что увеличит параллельные операции чтения) илиprefetch_factor(что приведет к увеличению числа элементов каждой рабочей предварительной выборки).