TextLMDataBunch Проблема с памятью Языковая модель Fastai

У меня есть набор данных с 45 миллионами строк данных. У меня есть три графических процессора по 6 ГБ оперативной памяти. Я пытаюсь обучить языковую модель данным.

Для этого я пытаюсь загрузить данные в виде пакета данных fastai. Но эта часть всегда дает сбой из-за проблем с памятью.

data_lm = TextLMDataBunch.from_df('./', train_df=df_trn, 
valid_df=df_val, bs=10)

Как решить эту проблему?

Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
0
0
575
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы используете эту функцию, ваш Dataframe загружается в память. Поскольку у вас очень большой фрейм данных, это вызывает ошибку памяти. Fastai обрабатывает токенизацию с размером фрагмента, поэтому вы все равно должны иметь возможность токенизировать свой текст.

Вот две вещи, которые вы должны попробовать:

  • Добавьте аргумент chunksize (значение по умолчанию — 10 КБ) к вашему TextLMDataBunch.from_df, чтобы процессу токенизации требовалось меньше памяти.

  • Если этого недостаточно, я бы посоветовал не загружать весь ваш фрейм данных в память. К сожалению, даже если вы используете TextLMDataBunch.from_folder, он просто загружает полный DataFrame и передает его TextLMDataBunch.from_df, вам, возможно, придется создать свой собственный конструктор DataBunch. Не стесняйтесь комментировать, если вам нужна помощь в этом.

да. Мне нужна помощь в этом. У вас есть ссылка?

Jerry George 04.03.2019 16:58

Изменить размер фрагмента было недостаточно? Не могли бы вы следить за использованием памяти, пока вы это делаете. У вас не хватает памяти в момент чтения csv или во время обработки csv?

Statistic Dean 04.03.2019 17:00

Другое решение, которое я могу придумать (я не знаю, возможно ли это для вас), состоит в том, чтобы создать пакет данных на другом компьютере (с большим объемом памяти), сохранить его, используя его метод сохранения, и загрузить его обратно на ваш фактический машина.

Statistic Dean 04.03.2019 17:02

У меня такая же проблема. Я думал о том, чтобы каким-то образом реализовать итерируемый набор данных pytorch, но у меня возникли проблемы с этим. Любая помощь будет принята с благодарностью. Для корпуса, который не помещается в память, мне интересно, как можно случайным образом разделить данные на обучение и тестирование.

user3225087 14.03.2020 06:02

Другие вопросы по теме