October 25, 2023

учим clip правильно - Sigmoid Loss for Language Image PT

Классический CLIP учиться по очень простой схеме - берем картиночную бошку(VIT,RN) не очень важно, инитим LM и учим все это с Contrastive loss

ух какая ебанутая визулазация лосса, пиздец да?
  • contrastive означает примерно следущее - давайте стягивать положительные между собой, остальное считать плохим. Для Обучением с таким лоссом нужен ОЧЕНЬ большой батч(32к+) и получить его для больших моделей крайне не тривиально(если у вас не 32к карт), а еще всякие zero3, tp и прочие плохо работают(чаще всего нет) и надо патчить. сейчас вышел open clip и там решены common проблемы, но там свои баги. Интеграция с hf до сих пор очень сомнительная, хотя казалось бы.
  • Triplet loss - тут возбудились любители vector search - если у нас есть hard negative то чо бы не использовать? Оно конечно правда и без проблем можно использовать triplet на обучени, но вам нужна хотя бы минимальная разметка. Нет - нельзя брать random как негатив - будет хуйня(нужен умный сэмплинг по источникам, а это в контексте мультимодалки не тривиально)

Sigmoid Loss

LLM RL щики должны возбудиться были еще в начале статье, ведь это литерали он

тот самый лосс из https://arxiv.org/abs/2203.02155

Ладно, на самом деле в модификации для t_i есть нормализация и есть обучаемый bias и температура(это очень умно)

Собственно эта хитрая модификация позволяет делать так(цитирую)

  • модель учиться с нуля на основе VIT B на 4tpu(~2a100) до точности 79.4%. Open ai до нее учили две недели на 500+gpu
пиздец я в ахуях просто

ПРИ ЭТОМ sigmoid loss менее требователен к batch size, те мы можем учить с меншьшим батчем, получая лучший результат(!)

А еще мы меньше жрем памяти. Очевидно почему.

Результаты прям хорошие, модель на 400m лучше чем 2B и 5B модели! Thats huuuuge

Читать папир тут

Тыкать код тут

P.S.

Если вам очень хочется поддержать блог и выход длинно-постов, то можно донатить сюда Для русских карт: 5536913977088695 Для не русских карт: 5269880013404165 Для крипто котиков bnb usdt: 0x4DBd65ec0C0E91755e02170fC1C8f85FB4D6F4f9