ТОТАЛНИ ДЕФЕКТИ

Философия на безкрайността, чудесата и политическата мода

ПОРЪЧАЙ ТУК

или търси в книжарниците!

Големи езикови модели: Въведение

Обновена на: April 24, 2023

С оглед на това, че напредването на изкуствения интелект ще достигне момент, в който ще шокира средностатистическия човек, – може би не толкова с технологическото си отличие, колкото с рязкото широко приложение – сметнах за уместно да кондензирам материала, който съм посъбрал, и да опиша един план; един речник евентуално в помощ на читателя.
Нишата се развива изключително бързо. Ако не ежечасово, то ежедневно стъпките на развитие приличат по-скоро на галопи. Във времето между “обявяването” на GPT-4 – визирам най-вече трансформирането на Bing от саката, почти умираща услуга за търсене в пионер на подравняването на ИИ (включването на Bing chat като крайъгълен камък на продукта).

Машинно самообучение (machine learning)

Какво представлява обучението? Как изобщо една машина учи? За момента (и релевантно за нашата тема) ML е терминът, който ползваме, когато говорим за учещи компютри. Той носи смисъла на сбора от алгоритми, посредством които една машина “се учи от опита E по клас задачи T и производителност P, ако производителността й при изпълнение на задачите от T, измерена с P, се подобрява с опита E“. (Т. Мичъл, 1997)
Един сравнително ясен пример би бил съвкупността от алгоритми, целта на които е да отговорят дали определен предмет се вижда в определено входно изображение: даваш му картинка с котка и го питаш дали на картинката има котка. Данните, които биха били нужни за самообучение, ще включват можество снимки на котки и множество снимки на кучета. При което, ако учителят е човек, алгоритъмът ще бъде “трениран” да разпознава едните от другите картинки. След процеса на трениране алгоритъмът ще е “запомнил” разликата и нови данни следва да бъдат обработени на база вече изградените “знания”: ако му дадеш нова снимка на котка, която не е виждал, той трябва успешно да определи дали е котка или не.

Дълбоко обучение (deep learning)

Какви алгоритмични архитектури можем да изградим, така че да усъвършенстваме машинното обучение? Каква структура можем да дадем на компютъра, така щото хем по-бързо, хем по-удачно да може да се тренира върху множества от данни? Тук deep learning ни казва, че невронните мрежи са най-удачният клас алгоритми за машинно самообучение. А това са слоеве от функции, всеки от които се интересува от все по-сложна част от сбора данни: ако говорим за картинки, най-ниските слоеве на мрежата биха се интересували от ръбове и краища, докато най-високите – от обективни контексти (котка, куче).

Трансформер (transformer)

Но каква е градивната частица на един изкуствен неврон? Дали “невронът” на мрежата ще е алгоритъм, който “цикли” върху всеки вход (данни), докато оцени дали той е релевантен към задачата? Да обработи по даден начин входа, така че изходът му да бъде вход за друг такъв неврон (Recurrent neural network)?
Да, това работи. Но е дяволски трудно да скалиране – за увеличаване капацитета на архитектурата. През 2017г. Гугъл преценят, че съществува по-адекватна градивна частица – трансформерът (“All you need is attention“, 2017). За разлика от цикленето на една “рекурентна мрежа”, където задачата се обработва дума по дума или данна по данна, “трансформерната мрежа” обработва задачата в цялост. Механизмът на вниманието (attention) позволява алгоритъмът да изгради контекст във всяка точка на задачата, на входните данни. С други думи, ако входните данни са изречение, което алгоритъмът трябва да обработи, на трансформерната мрежа не се налага да обработва изречението дума по дума – а това дава възможност такива мрежи да се паралелизират: върху една задача да работят n брой компютри (например по един за всяка дума). А така и да се увеличи скоростта на обработка, с което да се разреши проблемът на скалирането (машините не се налага да се изчакват; не се образува опашка, а всички работят едновременно).

Модел

Това, което в тази статия, а вероятно и по принцип (преди да говорим за модулни модели), ще наричаме ИИ, представлява ГЕМ – “Голям езиков модел” (LLM – Large language model). Езиковите модели са невронни мрежи въз основа трансформери, които имат много милиарди (в повечето случаи, макар и да съществуват по-малки модели) параметри. А параметрите са тежести – оценки, изградени по време на обучителния (трейнинг) процес на модела, за релевантността на конкретни данни: колко важна е думата X в контекста Y при задача T.
Тъкмо както един визуален модел е обучен да разпознава котки в картинки, така един езиков модел е обучен да разпознава тенденции в контексти. Функцията на един езиков модел е да предвиди най-вероятната дума, която ще последва дадения вход; да завършва изречения.
И ако тази функция звучи тривиално, се замислете какво трябва да знае едно дете, за да “запълни празното място” в домашна по език. Това да знаеш каква дума следва след друга дума, обикновено изисква дълбока запознатост както с контекста, така и с граматиката на езика, с неговата смислова структура, или, бихме си позволили да кажем, с неговата семиотика. Това е една от ежбите  в дебата за “разум” на изкуствения интелект – дали е само “калкулатор за думи”, който пресмята най-логичния завършек на един въпрос, или е нещо повече, което “разумява” защо завършекът е вероятен или правилен.

Лама

Large Language Model Meta AI – LLaMA – “ГЕМ на Meta AI”. Предполагам на български би звучал като “Геми”. Meta е преименуваната фирма майка на Фейсбук, която през февруари 2023 издаде няколко езикови модела (с различни размери) за публично (некомерсиално) ползване. Лама е обучен върху 1.4 трилиона думи. Обърнете внимание – моделът е обучен върху 1,400,000,000 отделни думи. Толкова литература е “прочел”.
Размерите на моделите се определят обаче не от обема обучителна информация, а от броя параметри за обработка на тази информация – 7B, 13B, 30B, 65B и нагоре. Съответно по-“глупавите” модели имат около 7 милиарда параметъра, по-умните 65 милиарда, и прочее. GPT-3 има 175 милиарда параметъра, а за GPT-4 информация нямаме, макар че се говори за около 1 трилион параметъра.
Ще пропусна дългата информация относно това как тежестите на модела “изтекоха” онлайн, противно на желанието на Meta да допускат достъп до тях контролирано, и как това доведе хората до възможността да “натренират” модели сами, използвайки вече готовите тежести. По-важното е, че малко след излизането на Лама, учени от Станфордския университет откриха как да направят обучаването на модели експоненциално по-евтино.

Цената на Алпака

Когато говорим за цената на един модел, адресираме както паричната стойност, нужна за извършване на процедурите, така и стойността на смятането, нужно за самия обучителен процес – а те са малко или много тъждествени. Стремежът тогава е да както да се намали обемът пресмятания, нужни за дадена точност на обучение, така и паричната стойност на отделното пресмятане. С други думи – да се повиши КПДто на хардуера, с който разполагаме.
Това става грубо по два начина – или произвеждаме по-ефективни процесори, или откриваме алгоритъм, който по-ефективно да натоварва мощността на чиповете.
Именно затова самият трансформер беше революция в нишата – един алгоритъм, който превръща задачата в матрични уравнения. А откакто инженерите са започнали да създават процесори, които да изкарват изображения на екран, те произвеждат процесори, които да пресмятат матрици – видеокарти. Тъкмо сега виждаме защо трансформерните мрежи се обучават върху видеокарти – защото мрежите превръщат езика във въпрос на матрични уравнения, а картите са изключително добри в пресмятането на матрици. (Тук пропускам да изясня разликата между тенсорни ядра и шейдърните ядра, но приемете, че модерните видеокарти притежават също така чипове, специално направени да пресмятат трансформери).
Алпака е “рецепта” за обучение на езикови модели въз основа Лама. (Университетът в) Станфорд казват нещо от рода на “ако вземем един готов модел – Лама – и поставим друг готов модел, – GPT-3 – който да го обучава вместо човек, тогава процесът на “самообучение”, на fine-tuning (фини настройки) започва да зависи не от цената на графичните кати, а от цената на услугата GPT-3. От това колко струва да ползваш готовия модел зависи колко струва да “тунинговаш” нов модел.

Фини настройки

ГЕМ-овете са вече натренирани. Те са модели, готови да отговорят на езиков въпрос. Но как можем да насочим стилистиката на техните отговори? Как можем да възпитаме (да подравним) модела въз основа еточни, културни, поведенчески или фактологични норми?
Процесът на fine-tuning (който оттук насетне ще наричам възпитаване) представлява още един стадий на обучение на готовия модел въз основа много по-кратък набор данни, конкретно избрани с цел да го насочат към определен стил на изказ. Тъкмо това е подходът при Алпака – възпитаване на един Лама модел да се държи като асистент. Асистент, който да изпълнява ясни и точни инструкции. Други такива проекти по превъзпитание представляват Коала, Доли, Викуня (Koala, Dolly, Vicuna) и прочее, продуктът на които е “нов” ГЕМ, превъзпитан да се държи по определен начин и да спазва определени правила (което аз наричам процес на кастриране). Техниките за превъзпитаване са различни и примери за тях са “LoRA“, “RLHF” и други. Съответно
“замразяване” на тежестите на модела и използване на друг, много по-малък модел, който да си “говори” с него (тоест да генерира реч, спрямо която отговорите на новия модел да се оценяват), докато го превъзпита в определената сфера (например да го направи по-добър шахматист, или да го научи много по-добре на български) или с определената етика (да не съставя рецепти за наркотици, да не навлиза в еротика),
и ползване на хора, които да оценяват отговорите на модела като “добри и лоши” респективно.

Лицензи и демокрация

OpenAI – фирмата за ChatGPT – (вече) държи информацията за нейните модели да не бъде публична. Дали заради съображения за конкуренция, или заради скорост на иновиране, не знаем. Но нито ще разберем обема параметри на GPT-4, нито ще получим тежестите му, нито ще имаме явна възможност да го превъзпитаваме.
Защо изобщо бихме искали? Да си представим, че GPT-5 е морализиращ агент с политическа позиция и етично “мнение”. Как тогава се очаква да получаваме ясни, неутрални и обективни отговори на нашите въпроси, ако “темпераментът” на ИИ-то е вече определен от неговите “родители” – от фирмата майка? Иначе, както някои краища на интернет (виж /g/lmg/ във 4Chan или /r/LocalLLaMA в Reddit за много добри общи ресурси по темата) желаят модели за еротика, така автори желаят модели за художествена литература, финансисти – за финансови модели, преводачи – за преводачески модели.
Изобщо бихме ли били доволни да плащаме месечна такса за употребата на една такава услуга, или бихме искали да си иградим своя? Ами ако самото устройство, на което четете тази статия, не беше “ваше”, а взето под наем – с месечна такса и без гаранция за собственост?
Тъкмо тези проблеми се решават с разговора около лицензите на ГЕМ-овете и движението за “демократизиран ИИ”. Ако последното носи неприятен привкус в устата, аз бих си позволил да ги наричам “пиратски модели” или “частно ИИ”.
След изтичането на продукта около Лама като вече лицензиран отворено (GPL 3 license), пиратското “общество” съвсем забързано започна да изучава моделите и да ги превъзпитава, докато се постигне един (по-скоро множество такива) “неутрален” (non-woke) модел. Най-добрият модел. Такива обаче, докато са все още “деца” на Лама, са под отворения й лиценз и не могат да се ползват за комерсиални цели.
А този проблем води различни фирми, дружества и общества до създаването на алтернативи на Лама или GPT, които да бъдат под други лицензи и следователно да дадат началото на едно родствено дърво комерсиалируеми модели. Това движение е в ход с продукти като GPT-J, OpenAssistant и други.

Сравняване и смут

Един от начините за сравняване на два ГЕМ-а е да се измери на техния смут (perplexity). Това е цифрово изразяване на достоверността на данните, които генерират. Казваме, че когато един модел “говори” несвързана или фактически неточна информация, той халюцинира или има високо ниво на смут. Обикновено, колкото повече параметри има един модел (колкото е по-голям), толкова по-малко е смутен. И това, разбира се, е логично – колкото повече тежести съдържа невронната мрежа, толкова по-акуратна е в своята езикова “прогноза”. И колкото по-малко параметри има, толкова по-вероятно е моделът да “изфантазира” завършек на изречението, който да не е ясно свързан смислово с по-широкия контекст на входаната информация.
Това също е свързано със самия параметър “контекст”, важен за експлоатацията на модела и променлив, но за него по-късно. Важното сега е, че всеки нов отворен (или затворен) модел обикновено се оценява на база смут в сравнение с по-популярен модел (като GPT-J срещу GPT-4 или Alpaca-7B срещу Vicuna-30B).

Георги Герганов

Всичко с ГЕМ-овете звучи страхотно, но как всъщност може един потребител да “говори” с тях? Знаем, че можем да взаимодействаме с един модел, като го обучаваме (да разделя котки от кучета), и като го запитваме (дали на снимката има котка, или не): трейнинг и инферанс. Инферанс ще нарека процеса, по който запитваме езиковия модел нещо и получаваме отговор, или може би полезното действие на модела.
По принцип и неучудващо инферанс се пресмята от графичната карта тъмо както и обучението. Но, за да извършим една такава операция спрямо ГЕМ, се нуждаем от масивно количество RAM-памет. Което също е логично – ако имаме модели с размер десетки гигабайти, които работят с целия контекст на задачата, трябва да заредим целия модел в компютърната памет, за да можем да го инферираме. Това обаче значи, че ще ни трябва най-висок клас консуматорска видеокарта, за да инферираме ГЕМ-ове със сравнително адекватна скорост. Доста скъпо начинание!
Георги Герганов бе може би първият в новото ГЕМ движение, който да измести тази трудоемка операция от видеокартата в централния процесор, който разполага с много повече RAM, отколкото видеокартата с VRAM (видео-памет). Да, централните процесори са по-бавни от видеокартите – едните са общи процесори, а другите – специализирани, но чрез няколко хитри операции по оптимизиране на езиковите модели като квантизиране (Тежестите на един модел са изразени в дроби. Дробта обаче може да бъде с определена точност след десетичната запетая, съвсем лаишки казано. Ако заявим с колко бита ще репрезентираме дадената дроб или заменим дробта с най-близкото й цяло число, можем радикално да намалим крайния размер на модела за сметка на точността му) и елегантно ре-структуриране (ggml), Герганов създаде llama.cpp – програмния продукт, който представлява нашия интерфейс към езиковия модел.
Чрез програмата на Герганов ние можем да “беседваме” с изкуствения интелект.
Толкова важен е проектът на Герганов, че на негова база изникнаха множество други проекти като KoboldCPP – различни интерфейси за езиковите модели кой с все по-иновативни функции и оптимизации. А популяризирането на квантизирането от Герганов доведе до снижаване на един 7-милиарден ГЕМ до абсурдните 4 гигабайта. 1.4 трилиона думи, обработени и наредени логично, в обема от едно DVD.
Страховито и гениално. А скоро очакваме още по-фини квантизации!

Контекст и температура

llama.cpp идва с няколко вече стандартни параметри за инфериране – контекст, температура, K, P и наказание. Съвсем накратно искам да разгледам резона зад тези параметри тук.
Контекстът е вероятно най-значимият параметър за инфериране. Обозначава количеството думи в разговора; прозореца реч, който моделът “помни”, когато формулира нов отговор. Колкото по-голям контекстът, толкова по-малък смутът, толкова по-адекватни отговорите.
Температурата, бихме могли да кажем, е нивото случайност, която ще бъде влияние, щом моделът формулира своя отговор. Колкото по-висока случайността, толкова по-“креативен” ще бъде отвогорът. С други думи, толкова по-висока става вероятността моделът да халюцинира. Понякога това е добре – особено ако моделът се ползва за писане на художествена литература!
Top_k и top_p са фините параметри, които респективно определят броя думи, от които ще се търси прогноза, и процента релевантност, който те трябва да имат към контекста, за да влязат в кюпа за решение. С 2000 и 0.95 съответно казваме “използвай 2000-те думи, релевантността към контекста на които е 95%, за да ми отговориш”. Един начин да получим “алчно” инфериране е да кажем кюпът думи да бъде само една и процентът релевантност да бъде 0. Така всяка най-вероятна дума ще бъде казана в контекста и се очаква отговорът да е максимално “релевантен”, тоест всяка дума е “оптимално” избрана. Доколкото моделът “знае” какъв изобщо е контекстът, разбира се.

Суфлиране

“Prompt-ване” на модела означава да му дадем “начална скорост”. Нека си спомним, че ГЕМ-овете завършват вече започнат текст – това е тяхната върховна функция. Модели като Алпака са възпитани да завършват подканвания като “Human: -> Assistant:” под формата на сценарий, например:

Human: Аз съм и ад, и рай?
Assistant: Господар съм и съм роб.

Но оборотите им се развиват до пределна точка, ако подканването или суфлирането е много по-обстойно. Така се заражда и новата длъжност в IT сферата, наречена prompt engineering или инженер по суфлирането (не претендирам това да е официалния български превод). Колкото по-хитро подканим езиковия модел, толкова по-сериозни резултати можем да получим. Ако го подканим да се преструва на някого или да разиграе дискурс по някакъв сценарий, толкова повече получаваме отговори “от определено лице или мироглед”, а не “от самия изкуствен интелект”. Така, ако един ИИ е превъзпитан да не говори цинично, то
промптването със сценарий, в който потребителят се намира в една стая с доказан циник (било то историческа личност или описан персонаж), изигран от ИИ-то ще бъде “байпас” на възпитанието му: интелектът ще говори от името на някого, вместо от свое име.
Това е и един от векторите, пътищата, по които нови функционалности “изнивкат” или “възникват” (emerge) от ГЕМ-овете. Функции, които не са програмирани в модела, или на които той не е бил обучаван. Джейсън Уей е събрал списък от 137 изникнали възможности на различни ГЕМ-ове на база техните размери. Примерите включват познания по теология, логическа дедукция, боравене с езикови родове в немския език, оценяване на метафори, решаване на логически пъзели, фонетична азбука, проверка за лапсуси, създаване на многоезични притчи, вземане на множество изпити, свиване на протеини, мажоритарно гласуване между множество собствени идеи за най-добър отговор, решаване на многостепенни математически задачи и много други.

Хиени, вомбати и памучни пижами

Виждаме, че “гърлото” на проблема – тясната точка, която се очаква да забави геометричния прогрес – изглежда да бъде размерът на контекста. Разбираме, че можем да получаваме инферанс с поразителна точност, ако моделът ни има поразителен брой параметри, но виждаме, че това изисква поразително количество ресурс. Как тогава можем да получим грандиозно по-големи размери контекст (например цяла книга?), когато водим разговор с един ГЕМ, без да ни трябва неразумно количество процесори и памет? Нима няма да е прекрасно моделът да не се налага да “предполага” кой е Перегрин Тук, за да ми каже какъв вид пушилист харесва, а да знае автоматично целия контекст на “Властелинът на пръстените”, за да ми отговори конкретно и точно?
Е, разрешение на това гърло се стреми да бъде нова съставна част на невронната мрежа. Нов алгоритъм, който да пресмята всичко; връщаме се в точка 3. и говорим за това защо трансформерът не може да държи огромни (десетохилядни, милионни, милиардни) контексти. Моите познания по математика и софтуерно инженерство не са достатъчни, за да ви отговоря къде е семето на проблема и как се разрешава, но хиените са нова идея за невронни алгоритми, които ще ни позволят именно тези грандиозни контекстни обеми. В студията, която съм прикачил, по-зорките и умни читатели ще могат да се запознаят със предложената структура на “хиеновия” алгоритъм и как тя позволява да използваме нашите експертни процесори, за да повишим главоломно тяхното КПД в задачите с естествени езици: казва ни “дайте ни малко време за проучване и прототипиране и ще ви дадем инфериране с брутално количество контекст” или “ГЕМ-овете могат да бъдат неимоверно по-интелигентни от сегашните”. И то на същия хардуер!
Трогателно е колко великолепно инженерно развитие ни очаква в тази посока и колко то – неочаквано – е тясно свързано с филологията, лингвистиката и семиотиката. Един градящ се мост между математиката и езика или дори психологията.

nVidia

По незнайни за мен причини nVidia се разви като водещия производител на изчислителни машини за изкуствен интелект. Новоизлюпеният модел карти Н100, които струват около $15,000, съвсем накратко, са главозамайващо по-ефективни в пресмятането на задачи с трансформери (и евентуално с хиени) от предния модел А100, дори не толкова по-възрастен. И имат неразумно количество памет. Хардуерното развитие изглежда следва някакъв нов Закон на Мур, според който КПД-то на видеокартите (макар че е редно тези да не ги наричаме така, имайки предвид, че са повече специализирани в тенсорни и мултиплицитни пресмятания, отколкото във видео) ще расте експоненциално; напомня ми на растежа на КПД на ЦПУ-тата от края на миналия век до около 10-те години на новия век. Ясно изглежда, че за момента тази фирма води движението и определя цената и възможностите.

Китай

Китай е страната с най-сериозно участие – поне видимо – в нишата на ГЕМ-овете след САЩ. Редно е тогава да се зададе въпросът дали Китай ще задмине САЩ в сферата на изкуствения интелект и дали (макар това да е друг въпрос) това ще я изведе като доминиращата дъжава както в технологичната сфера, така и в сферата на услугите. Мисля, че Иля Суцкевер – главният научен сътрудник в OpenAI – каза, че въпросът не е да се подобри дадена услуга с ИИ (като например услугата на техническата поддръжка), а да се измести изцяло.
Развитието на ГЕМ-овете обаче, както казах, зависи от хардуера, а водач е nVidia – американска фирма. Докато Китай не започне да произвежда конкурентни процесори на своя почва, – и да спре да зависи от тайванския производител TSMC, който работи с американска технология и е  следователно под санкции срещу Китай – страната няма шанс да задмине САЩ. Уви, има слухове, че Китай вече има дизайните за по-сериозни изчислителни машини от американските, но за момента е ясно, че производството им, което изисква почти неизмерно ниво на точност (H100 процесорите ползват 4-нанометрови транзистори!), може да се извършва единствено с американско ноу-хау. За какво са ти чертежи, ако нямаш строители?
Може ли този въпрос да разгорещи отношенията между Китай и САЩ? Може ли да доведе до тайвански конфликт? До война? Предстои да разберем.

Приложение

С всичко това предвид, ще заключа статията с няколко приложения за читателя.
За момента следва да е ясно на всички, че най-лестният начин да употребим един изкуствен интелект е да ползваме ChatGPT или Bing chat. Първото се случва чрез онлайн интерфейса на OpenAI тук – една затворена среда, която след определена тежест на труда изисква заплащане – и респективно като изтеглим Edge от Microsoft и използваме вградения чат модул.
За хобистите, които искат отворен ИИ или от политически, или от чисто финансови причини, имаме няколко възможности.
Една от тях е да ползваме друг онлайн интерфейс като този от LmSys. За него знаем, че е безплатен и ползва отворени модели, но не сме сигурни дали разговорите няма да се употребят за по-нататъшно обучение или превъзпитаване на модели. Рискът е ваш, но имате избор от няколко водещи отворени модели.
Другата е да свалим модел на компютъра си и да ползваме програма за инферанс като llama.cpp или Kobold. Ще опиша стъпките за llama.cpp и ще предложа модел за ползване, който за момента считам за адекватен, ако някой иска да се занимава.

Под Windows, работата е сравнително бърза и лесна.
1. Сваляме си llama.cpp, по възможност последната итерация, като .zip и работим с main.exe, като посочваме модела, началните параметри и подканата. Примери за такива има в repо-то на г-н Герганов.

2. Сваляме модел по наш избор. Намирам Koala-7B за достатъчно адекватен при RAM изискване от около 6GB за функциониране. Обикновено работим на 16-гигабайтови компютри, така че подкарването на един 7-милиарден модел следва да е по джоба на всеки. Един квантизиран 7В модел “тежи” около 4GB – едно дивиди. Съвсем нормално.

3. Следваме указанията да пуснем llama.cpp с дадения модел:
main.exe -m Път към модела -t Брой нишки (равен на ядрата най-добре) –temp Температура –top_k –top_p –repeat_penalty -c Контекст
Така, за един сравнително интересен разговор бихме могли да ползваме:
main.exe -t 6 -m koala-7b-ggml-q4_0.bin –color -c 2048 -n -1 –temp 0.7 –repeat_penalty 1.183 –top_k 1500 –top_p 0.955 -p “BEGINNING OF CONVERSATION:
USER: ” -r “USER: ” -r “USER:”

4. Ако това ви се струва трудно, просто свалете Kobold, придърпайте модела върху .ехе-то и отворете с браузъра си линка, който ще ви се даде. Повече информация в репо-то.

Линуксджиите могат да се ориентират по гореописаното и по самите репозитории. Ползва се същия модел като файл, нищо учудващо. Просто компилирайте llama.cpp или Kobold на компютъра и следвайте инструкциите. Компилирането изобщо не е страшно, но ако ви приплашва, прилагам линкче към предварително компилиран релийз (малко по-стар), който ползвам за Коала, както и няколко начални промптчета тук.
Всички указания и предварително подготвени неща са за 6-ядрен процесор. Променете -t по вашите нужди при употреба. Запомнете, че на този етап hyperthreading не работи добре, така че -t е най-добре да е равен на ядрата, не на нишките.