dimhold.by
← Артыкулы

Найбольшая мадэль эмбедынгаў OpenAI каштуе ў 75 разоў даражэй за найменшую і прайгравае на ArguAna мадэлі на 22 мільёны параметраў

Я хачу зрабіць пошук па сваіх нататках, гэта значыць па пастах гэтага блога. Спачатку трэба выбраць вектары. У студзені OpenAI адкрыла эндпойнт эмбедынгаў і апублікавала артыкул пра мадэлі за ім. Табліца 6 у ім параўноўвае пошукавыя мадэлі OpenAI з 8 іншымі метадамі на 11 наборах з BEIR. BEIR гэта бенчмарк пошуку па незнаёмых даных. У калонцы сярэдняга найбольшая мадэль cpt-text XL лепшая ў табліцы, 52,8.

Праз некалькі дзён Нільс Раймерс, аўтар sentence-transformers, выклаў доўгі адказ. Ён сам выклікаў API на 6 пошукавых наборах, з Ada і Babbage, яшчэ ў бэце ў снежні. Ён прыйшоў да высновы, што пошукавыя мадэлі на ўзроўні бясплатных, а ў працы каштуюць у 8000, а то і ў 600000 разоў даражэй. Так у мяне апынуліся 2 тэксты з лікамі, якія казалі рознае. Сваіх лікаў у мяне не было.

Да запуску я запісаў сваю здагадку. Лепшая бясплатная мадэль прайграе XL у сярэднім на велічыню ад 3 да 8 пунктаў. І абгоніць найменшую мадэль OpenAI хаця б на 2 наборах з 4. Ацэнку ад 3 да 8 пунктаў я ўзяў толькі з калонкі сярэдняга і на радкі не глядзеў.

Як мераў

API я не выклікаў. З боку OpenAI бяру лікі з іх артыкула. Па даўжыні вектара найменшы памер S гэта Ada ў API, а найбольшы XL гэта Davinci. У іх 1024 і 12288 лікаў у вектары. Са свайго боку ганяю бясплатныя мадэлі на тых жа наборах з той жа метрыкай. Гэта nDCG@10, яна глядзіць на першыя 10 вынікаў і дае большую вагу верхнім.

Наборы гэта 4 найменшыя з 11, бо ўсё ідзе на CPU з 4 ядрамі. У SciFact 5183 анатацыі і 300 навуковых сцвярджэнняў для праверкі. NFCorpus гэта медыцынскія артыкулы і 323 запыты, напісаныя для шырокай публікі. У FiQA 57638 адказаў з раздзела пра інвестыцыі на Stack Exchange і 648 пытанняў. У ArguAna 8674 аргументы. Для кожнага з 1406 запытаў правільны вынік гэта контраргумент.

Бясплатныя мадэлі гэта 5 мадэляў sentence-transformers з чэрвеня па жнівень мінулага года. У all-MiniLM-L6-v2 22 мільёны параметраў і вектары з 384 лікаў. У all-mpnet-base-v2 і multi-qa-mpnet-base-dot-v1 каля 110 мільёнаў і 768 лікаў. multi-qa-MiniLM-L6-cos-v1 гэта маленькая мадэль для пытанняў. msmarco-distilbert-base-tas-b гэта TAS-B, яна ёсць і ў табліцы OpenAI. Побач з імі BM25 з rank_bm25 0.2.2, простае супадзенне слоў. Пошук дакладны, кожны запыт параўноўваецца з кожным дакументам.

Па TAS-B я праверыў, што мае лікі значаць тое ж, што і іхнія. На 4 наборах у мяне 64,28, 31,89, 42,70 і 30,02, а ў табліцы 64,3, 31,9, 42,9 і 30,0. Мой BM25 не той, што ў іх: на SciFact ён на 1,3 пункта ніжэй, на ArguAna на 7 вышэй. BM25 у BEIR гэта Elasticsearch са сваімі наладамі, таму свой я трымаю толькі як арыенцір.

Першы прагон паказаў, наколькі гэта павольна. TAS-B на SciFact лічыла 55 хвілін на 5183 анатацыі, на sentence-transformers 2.2.0 з torch 1.11. Па дарозе я страціў яе з вачэй і запусціў другую копію. Другую забіў, толькі калі ўбачыў абедзве ў спісе працэсаў. Потым большая частка прагонаў пайшла на другую ўсталёўку, якая на гэтым CPU прыкладна ў 3 разы хутчэйшая. 4 ячэйкі я прагнаў на абедзвюх усталёўках. Значэнні nDCG@10 супалі дакладна.

Па наборах

nDCG@10 на 4 наборах BEIR OpenAI, лікі з іх артыкула бясплатныя мадэлі, мой прагон BM25, мой прагон SciFact S M L XL лепшая бясплатная 65,6 NFCorpus S M L XL лепшая бясплатная 33,3 ArguAna XL L S M лепшая бясплатная 50,4 FiQA S M L XL лепшая бясплатная 50,0 20 30 40 50 60 70 80
Літары гэта 4 памеры OpenAI з табліцы 6 артыкула. Кропкі гэта бясплатныя мадэлі, падпісаная лепшая з іх на гэтым наборы.

У сярэднім здагадка спраўдзілася, блізка да ніжняй мяжы. XL на гэтых 4 наборах дае 52,7. Лепшая асобная бясплатная мадэль, all-mpnet-base-v2, дае 48,8. Гэта на 3,9 пункта ніжэй і на 2,4 вышэй за S. Супраць S, калі на кожным наборы браць лепшую бясплатную мадэль, бясплатны бок выйграе на ArguAna і FiQA. На NFCorpus у all-mpnet-base-v2 33,29 супраць 33,2. Гэта я лічу нічыёй. На SciFact бясплатны бок прайграе.

Але сярэдняе складаецца з вельмі розных радкоў. На SciFact у XL 75,4, а ў all-mpnet-base-v2 65,6, амаль на 10 пунктаў менш. На NFCorpus 40,7 супраць 33,3.

ArguAna ідзе ў адваротны бок. multi-qa-mpnet-base-dot-v1 атрымлівае 50,4, а all-MiniLM-L6-v2 50,2. З 4 памераў OpenAI лепшы M, 49,2, а горшы XL, 43,5. Гэта ва ўласнай табліцы OpenAI. Тут запыт гэта цэлы аргумент, а адказ гэта аргумент супраць яго. Мая здагадка ў тым, што гэта задача, адрозная ад адказу на пытанне, але я гэтага не правяраў. У той жа табліцы XL ніжэй за S яшчэ на Quora і TREC-COVID, якія я не ганяў.

FiQA здзівіла мяне найбольш. multi-qa-mpnet-base-dot-v1 скончыла там першай з 48,8. Гэта вышэй за L, а XL дае 51,2. Гэта выглядала занадта добра, таму я адкрыў спіс таго, на чым мадэль вучылася. Там ёсць пары з загалоўка і адказу з money.stackexchange.com. FiQA сабраная з таго ж сайта. Гэтыя пары ёсць у 4 з 5 маіх бясплатных мадэляў, ва ўсіх, акрамя TAS-B. Аўтары мадэляў выклалі гэтыя пары, для гэтага сайта іх 29404. Я параўнаў. 532 з 648 тэставых пытанняў ёсць там як загалоўкі. У пары да іх стаіць адказ, які FiQA пазначае як рэлевантны.

Я ледзь не выкінуў all-mpnet-base-v2 з FiQA, бо там ёй трэба 3,8 гадзіны нават на хутчэйшай усталёўцы. Яна скончыла з 50,0. Гэта лепшы бясплатны вынік там, на 1,2 ніжэй за XL. У яе спісе навучальных даных тыя ж пары.

Я чакаў, што на астатніх 116 пытаннях вынік упадзе. Ён амаль не зрушыўся: 48,6 супраць 48,8 у multi-qa-mpnet-base-dot-v1, 48,3 супраць 50,3 у all-mpnet-base-v2. Але і 116 не чыстыя. 72 з іх там таксама загалоўкі, але з іншым адказам. Яшчэ ў 5 рэлевантны адказ ёсць сярод пар. Толькі 39 пытанняў не сустракаюцца ні тым, ні іншым чынам. На іх 2 мадэлі даюць 44,8 і 43,4. TAS-B, якая гэтага сайта не бачыла, дае там 31,7 супраць 29,9 на астатніх 609. Выходзіць, перавага all-mpnet-base-v2 над TAS-B 12 пунктаў на 39 пытаннях і 20 на астатніх. На 39 пытаннях яе стандартная памылка каля 6. Пры такой малой колькасці пытанняў я не магу сказаць, ці дапамагае перасячэнне. OpenAI піша, што іх мадэлі вучыліся на даных з інтэрнэту, так што тыя ж старонкі маглі трапіць і ў іх.

Колькі гэта каштуе

Корпусы і тэставыя запыты ўсіх 4 набораў, 15,0 мільёна токенаў сярэдняе nDCG@10 Ada (S) $120,29 46,5 Babbage (M) $180,43 49,6 Curie (L) $902,16 51,1 Davinci (XL) $9 021,57 52,7 all-mpnet на маім CPU $0 48,8
Цэны са старонкі OpenAI на канец красавіка 2022 года, токены палічаныя токенізатарам GPT-2. Памеры супастаўленыя з мадэлямі API па даўжыні вектара. Сярэдняе па тых жа 4 наборах, у OpenAI з іх артыкула, у лепшай асобнай бясплатнай мадэлі з майго прагону.

Токены я лічыў токенізатарам GPT-2 і абразаў дакументы да 2040 токенаў. Раймерс згадвае пра такое абразанне ў дапаўненні да свайго паста. Яно ўзята са скрыпта, які пазней даслаў аўтар артыкула. Цэны са старонкі OpenAI на канец красавіка: $0,008 за 1000 токенаў на Ada і $0,60 на Davinci, у 75 разоў даражэй. Корпусы і тэставыя запыты ўсіх 4 набораў гэта 15,0 мільёна токенаў. Гэта $120,29 на Ada і $9021,57 на Davinci. З іх $5960 прыпадае на адну FiQA.

Davinci дае 12288 лікаў на дакумент. У float32 вектары FiQA займаюць 2,8 ГБ, супраць 89 МБ у MiniLM з яе 384 лікамі.

За бясплатны бок плаціш працэсарным часам. all-MiniLM-L6-v2 закадавала SciFact за 11 хвілін на той жа версіі 2.2.0 і тых жа 4 ядрах. На хутчэйшай усталёўцы 3 мадэлі з 768 лікамі ішлі на SciFact у 6, а то і ў 16 разоў даўжэй за MiniLM.

Так што выбар залежыць ад таго, на што падобныя мае нататкі. Калі на SciFact, XL у артыкуле прыкладна на 10 пунктаў nDCG@10 вышэй за лепшую бясплатную мадэль. Закадаваць адзін SciFact на Davinci каштуе $1015,80, гэта значыць каля $1000 за 5000 анатацый. Калі на ArguAna, all-MiniLM-L6-v2 з 22 мільёнамі параметраў адстае ад лепшай бясплатнай на 0,2 і стаіць вышэй за любы памер OpenAI. Даведаюся я пра гэта, толькі калі напішу невялікі набор пытанняў з размечанымі адказамі па сваіх нататках. Для свайго пошуку я такога не рабіў ніколі.

Чаго я не правяраў

  • Сам API. Раймерс атрымаў ад API на FiQA іншыя вынікі, чым у артыкуле. Потым ён знайшоў прычыну ў тым, як рэжуцца доўгія тэксты. Мадэлі ў API маглі і памяняцца з часу выхаду артыкула.
  • 7 з 11 набораў табліцы, у тым ліку Quora і TREC-COVID, дзе XL прайгравае S. На 4 ядрах MiniLM лічыла б іх тыднямі, а большыя мадэлі месяцамі.
  • Перасячэнне з навучальнымі данымі на астатніх 3 наборах. Я глядзеў толькі FiQA, бо яе лік выглядаў падазрона.
  • Пераранжавальнікі і SPLADE. У артыкуле ў SPLADE v2 у сярэднім па 11 наборах 52,7, на 0,1 ніжэй за XL.