Databricks ❤️ Hugging Face ускорение обучения и настройки больших языковых моделей на 40%

Databricks ❤️ Hugging Face - 40% acceleration in training and tuning of large language models

Генеративный искусственный интеллект покоряет мир. Как компания, занимающаяся данными и искусственным интеллектом, мы принимаем участие в этом путешествии с выпуском открытой модели большого языка Dolly, а также внутреннего набора данных, лицензированного для исследований и коммерческого использования, который мы использовали для его настройки, databricks-dolly-15k. Как модель, так и набор данных доступны на Hugging Face. Мы многое узнали на протяжении этого процесса и сегодня с радостью объявляем о нашем первом из множества официальных внесений в кодовую базу Hugging Face, которое позволяет пользователям легко создавать набор данных Hugging Face из Apache Spark ™ dataframe.

«Было прекрасно видеть, как компания Databricks выпускает модели и наборы данных для сообщества, и теперь мы видим, как они расширяют эту работу с прямым коммитом в открытый исходный код Hugging Face. Spark является одним из самых эффективных движков для работы с данными в масштабе, и прекрасно видеть, что пользователи теперь могут воспользоваться этой технологией для более эффективной настройки моделей Hugging Face».

– Клем Деланж, CEO Hugging Face

Hugging Face получает поддержку Spark первого класса

За последние несколько недель мы получили много запросов от пользователей, которые хотели бы иметь более простой способ загрузки своего Spark dataframe в набор данных Hugging Face, который может быть использован для обучения или настройки модели. До выпуска сегодняшнего дня, чтобы получить данные из Spark dataframe в набор данных Hugging Face, пользователи должны были записывать данные в файлы Parquet, а затем указывать набору данных Hugging Face эти файлы для их повторной загрузки. Например:

from datasets import load_dataset

train_df = train.write.parquet(train_dbfs_path, mode="overwrite")

train_test = load_dataset("parquet", data_files={"train":f"/dbfs{train_dbfs_path}/*.parquet", "test":f"/dbfs{test_dbfs_path}/*.parquet"})

#16GB == 22min

Это было не только неудобно, но также означало, что данные должны были быть записаны на диск и затем снова считаны. Кроме того, данные рематериализовались после загрузки обратно в набор данных, что занимало больше ресурсов и, следовательно, больше времени и затрат. Используя этот метод, мы видели, что относительно небольшой (16 ГБ) набор данных занимал около 22 минут, чтобы пройти от Spark dataframe до Parquet, а затем в набор данных Hugging Face.

С последним выпуском Hugging Face мы делаем это намного проще для пользователей, просто вызывая новую функцию “from_spark” в Datasets:

from datasets import Dataset

df = [какой-то Spark dataframe или Delta table загружен в df]

dataset = Dataset.from_spark(df)

#16GB == 12min

Это позволяет пользователям использовать Spark для эффективной загрузки и преобразования данных для обучения или настройки модели, а затем легко отобразить свой Spark dataframe в набор данных Hugging Face для простой интеграции в их обучающие конвейеры. Это сочетает в себе экономию затрат и скорость от Spark и оптимизации, такие как отображение в память и умное кэширование от наборов данных Hugging Face. Эти улучшения сократили время обработки нашего примера набора данных объемом 16 ГБ более чем на 40%, с 22 минут до всего 12 минут.

Почему это важно?

По мере перехода к этой новой парадигме искусственного интеллекта, организации должны использовать свои чрезвычайно ценные данные для улучшения своих моделей искусственного интеллекта, если они хотят достичь лучшей производительности в своей конкретной сфере. Это почти наверняка потребует работы в виде преобразования данных, и эффективное выполнение этой работы над большими наборами данных – это то, для чего был создан Spark. Интеграция Spark с Hugging Face дает вам экономичность и производительность Spark, сохраняя интеграцию конвейера, которую обеспечивает Hugging Face.

Продолжение поддержки открытого исходного кода

Мы видим этот выпуск как новый путь для дальнейшего вклада в открытое сообщество, что, по нашему мнению, Hugging Face делает очень хорошо, так как оно стало фактическим хранилищем открытых моделей и наборов данных. Это только первый из многих вкладов. У нас уже есть планы добавить поддержку потоковой передачи данных через Spark, чтобы сделать загрузку набора данных еще быстрее.

Чтобы стать лучшей платформой для пользователей, желающих погрузиться в мир искусственного интеллекта, мы усердно работаем над предоставлением лучших инструментов для успешного обучения, настройки и развертывания моделей. Мы не только продолжаем вносить вклад в Hugging Face, но также начали выпускать улучшения в наших других проектах с открытым исходным кодом. В недавнем релизе MLflow была добавлена поддержка библиотеки transformers, интеграция с OpenAI и поддержка Langchain. Мы также объявили о функциях искусственного интеллекта в Databricks SQL, которые позволяют пользователям легко интегрировать OpenAI (или свои собственные развернутые модели в будущем) в свои запросы. В дополнение ко всему этому, мы также выпустили PyTorch дистрибьютор для Spark, чтобы упростить распределенное обучение PyTorch на платформе Databricks.

Эта статья была изначально опубликована 26 апреля 2023 года в блоге Databricks.