Задать вопрос
@MIkkelli

Как организовать обучение нейронной сети?

Всем добрый день! Планируется обучение нейросети для вычисления количественных данных с изображения. Предположительно CNN, в связи с чем имеется пару вопросов, как лучше это организовать, вдруг у кого есть опыт/идеи для таких кейсов:
1) Как лучше организовать обучение, если датасет занимает 30+ Тб данных? Соответственно, проблема в хранении и последующем использовании этих данных, не хранить же 30 Тб на компьютере, на котором будет происходить обучение. Ориентируемся на сотни тысяч изображений.
2) Вопрос для понимания: для поставленной задачи нужно ли дополнительно к самим изображением предоставить нейросети некоторые дополнительные количественные признаки, помимо целевого? Решение нейросети будет сравниваться с классическими ML подходами, которым как раз будут скармливаться табличные данные.
  • Вопрос задан
  • 19 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • REBRAIN
    Ceph
    1 месяц
    Далее
Пригласить эксперта
Ответы на вопрос 2
@rPman
Как лучше организовать обучение, если датасет занимает 30+ Тб данных?
процесс обучения нейросетей в общем выглядит следующим образом.

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

Затем организуется цикл:
Прогнать всю обучающую выборку (все имеющиеся данные) через нейросеть, вычислить расхождение текущей сети с ожиданием, подправить нейросеть
повторить цикл до некоторых критериев (например ошибка ниже порога, или скорость падения ошибки замедлилась ниже порога, или прогон на тестовом наборе выдает ошибку выше порога и т.п.)

Затем полученную нейросеть оценивают с практической точки зрения, и если что то не так, меняют гиперпараметры нейронной сети (размерность, алгоритм, способ подготовки данных и т.п.) и прогоняют цикл заново.

В итоге - исходные данные буду считываться постоянно и непрерывно много много раз (тысячи-сотни тысяч раз).

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

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

Процесс обучения нейросети - творческий, нет простых шагов, которые бы давали гарантию результата.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Данные шардируй (webdataset/tar-шарды, tfrecord, lmdb) и стримь прямо из s3/ceph батчами через dataloader — 30тб на диск никто не льёт, локально только кэш активного поднабора. Доп. признаки добавляй, только если они реально будут доступны в проде, а не только в разметке, иначе это data leakage. И train/test дели по группам/съёмкам, а не случайно по файлам, иначе метрика завышена.
p.s. если объём совсем неподъёмный — начни с 1-5% датасета и смотри, растёт ли качество от добавления данных, чтобы не жечь бюджет впустую.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы