Някои програмисти са толкова добре познати, че не се нуждаят от специално представяне. Вероятно Фабрис Белард е най-ярката звезда на нашето време. Авторът на мултимедийния комбайн FFmpeg, емулатора QEMU и десетки други полезни програми е абсолютен гений и пример за 100x програмист, който собственоръчно е направил повече добро за света от много корпорации със стотици програмисти. Изобщо всички познават Фабрис – преди дванайсет години медиите започнаха да му обръщат внимание…
… Но сега е време да се върнем към тази тема. Така е за добро, защото Фабрис направи изключително много през това десетилетие, особено в областта на невронните мрежи.
Проектите
Нека да си припомним списъка с основните разработки на Фабрис. Списъкът изглежда много впечатляващ. Както стана ясно още през 2011 г., много от тези програми заслужават да се превърнат във венец на кариерата на един програмист. И той ги е направил всичките съвсем самостоятелно. И продължава да работи. Ето една малка част от неговите проекти (плюс още няколко десетки в архива):
- 1989-1990 г.: LZEXE – изпълним файл за DOS за прозрачно архивиране/разрхивиране (компресиране и декомресиране) на файлове. Много хора използваха тази програма през 90-те години. Както можете да видите, това е първият значим проект на Фабрис за потребителите по целия свят. Той пише LZEXE на асемблерен език за процесора 8086 на едва на 17-годишна възраст, когато все още е в училище, въз основа на алгоритъма LZSS. Било е необходимо да се напише на асемблер за да се получи двоичен файл с минимален размер, така че архивираните файлове заедно с разархиватора да заемат по-малко място от оригиналните файлове. В противен случай идеята губи смисъл.
- 1995 г.: Реализация на езика C на метода на Полард за ефективни операции за умножение с помощта на бързо преобразуване на Фурие (FFT). Това е първото практическо приложение на фундаменталното откритие на Полард, тъй като самият той като математик не е можел да пише програмен код.
- 1996 г.: Harissa, виртуалната машина на Java и мощен компилатор за нативен код на Java (транслира кода от Java на C).
- 1996 г.: fbcc, минималистичен компилатор на C, който може да компилира самия себе си.
- 1997 г.: Публикация на формулата на Белар за изчисляване на цифрите на числото пи. Тази публикация донася на Фабрис световна слава (в тесни кръгове), тъй като с формулата си той намалява сложността на изчислението от предишното O(n³(log n)³) до простото O(n²).
- 1999 г.: Linmodem е софтуерен модем с отворен код за Linux, аналог на winmodem за Windows.
- 2000 г.: Изчисляване на най-голямото известно просто число (световен рекорд, числото 274207281-1, около 23 милиона цифри). Сорс кодът на C на този алгоритъм заема невероятно малко място – едва 448 байта:
int m=1811939329,N=1,t[1<<26]={2},a,*p,i,e=73421233,s,c,U=1;g(d,h){for(i=s;i<1<< 25;i*=2)d=d*1LL*d%m;for(p=t;p<t+N;p+=s)for(i=s,c=1;i;i--)a=p[s]*(h?c:1LL)%m,p[s] =(m*1U+*p-a)*(h?1LL:c)%m,*p=(a*1U+*p)%m,p++,c=c*1LL*d%m;}main(){while(e/=2){N*=2 ;U=U*1LL*(m+1)/2%m;for(s=N;s/=2;)g(136,0);for(p=t;p<t+N;p++)*p=*p*1LL**p%m*U%m; for(s=1;s<N;s*=2)g(839354248,1);for(a=0,p=t;p<t+N;)a+=*p<<(e&1),*p++=a%10,a/=10; }while(!*--p);for(t[0]--;p>=t;)putchar(48+*p--);}
2000: LibBF, малка библиотека за работа с числа с плаваща запетая с произволна точност. Компилираният размер е около 90 KB x86 код без зависимости. Тя не е нито най-бързата, нито най-малката библиотека, но се опитва да бъде опростена, като същевременно използва асимптотично оптимални алгоритми. Основните аритметични операции имат почти линейно време за изпълнение. Примерът TinyPI от тази библиотека изчислява милиарди цифри на Пи, като използва формулата на Чудковски.
2000: FFmpeg. Добре позната програма за обработка на мултимедийни файлове, включително редактиране и прекодиране. Фабрис Белард поддържа самостоятелно поддържа този проект (мултимедийна система с отворен код) през първите няколко години, след което го предава на общността.
2001 г.: Компилаторът Tiny C (TCC или TinyCC), който позволява компилиране и изпълнение на програми при ограничено дисково пространство и памет, например на дискети. Препроцесорът, компилаторът, асемблерът и линкерът заедно заемат по-малко от 100 KB в един двоичен файл, като работят около девет пъти по-бързо от GCC.
2002 г.: TinyGL, малко, бързо и безплатно подмножество на OpenGL.
2002 г.: QEmacs (Quick Emacs), клонинг на Emacs, в който Фабрис започва да изучава алгоритмите за визуализация на Unicode, работата с текстови буфери и парсинга на XML/HTML/CSS. Тук например можете да видите резултата от рендирането на HTML директно в редактора:
- 2003 г.: QEMU е емулатор с отворен код с динамична транслация на кода от една процесорна архитектура в кода на друга архитектура, не чрез отделни инструкции, а чрез цели блокове код, което осигурява висока производителност. Това е първият в света емулатор на процесор, който показва производителност, близка до тази на оригиналния процесор.
- 2004: Зареждащият модул TinyCC, който в реално време компилира и зарежда Linux ядрото директно от неговия сорс код. На стар Pentium 4 2,4 GHz компилирането на ядрото отнема по-малко от 15 секунди.
- 2005 г.: Предавател на DVB-T сигнал от компютър към телевизор.
- 2009 г.: Световен рекорд за изчисляване на пи, поставен на Intel Core i7 с гореспоменатата помощна програма TinyPi (софтуер).
- 2011 г.: JSLinux, компютърен емулатор, работещ с Linux на JavaScript. Не само Linux, но и други операционни системи вече могат да бъдат стартирани в браузър.
Ето какво създава този гений през следващите почти 10 години
- 2014-2018 г.: форматът за компресиране на изображения Better Portable Graphics (BPG) се базира на подмножество алгоритми от видеокодека HEVC. Новият формат е предложен като заместител на JPEG. Неговото предимство пред всички останали формати (JPEG, JPEG 2000, JPEX XR, WebP) може да се наблюдава при визуална демонстрация, като разликите са много големи.
- 2019-2023 г.: QuickJS – малък вграден JavaScript енджин само от няколко C файла, без външни зависимости, 210 KB код за семплата програма hello world, много бърз интерпретатор, почти пълна поддръжка на ES2020. Съдейки по резултатите от тестовете, той е почти толкова добър, колкото V8 (Chrome) и SpiderMonkey (Firefox):
2020-2023: Помощната програма ts_zip за компресиране без загуби на англоезични съобщения в езиков модел (в първата версия това беше GPT-2). По същество това е ефективен архиватор на текстове, който взема предвид вероятността за следващата дума. Например, съобщението:
This lossless compressor achieves a much higher compression rate on English texts than general purpose compressors (116 символа)
Се компресира до следните 10 символа:
猟慴䅭铕袢珏寻䡷䁞꽱
Средното ниво на компресия е 15%.
В днешно време за ефективната работа на архиватора е необходим добър графичен процесор. В зависимост от размера на модела ефективната степен на компресия варира от няколко килобайта в секунда до няколкостотин килобайта. Друго важно условие е, че за архивиране и разархивиране трябва да се използват едни и същи GPU и LLM модели, а видеоускорителят е желателно да има голямо количество памет. Така например, за разархивиране на файлове с модела rwkv_169M са необходими 0,38 GB видеопамет, с модела pythia_deduped_70M – 6,61 GB, а с falcon_7B_q4 – 8,44 GB.
Нивото на компресия на ts_zip с различни LLM в сравнение с CMIX v19 (една от най-добрите програми за компресия без загуби в света) и стандартния xz, който всички използват като по-ефективна алтернатива на gzip и bzip2. По-долу нивото на компресия е дадено в битове на байт:
| Файл | Оригинален размер (байтове) | xz (bpb) |
CMIX v19 (bpb) |
pythia_deduped_70M (bpb) |
rwkv_169M (bpb) |
rwkv_430M (bpb) |
falcon_7B_q4 (bpb) |
rwkv_7B_q4 (bpb) |
|---|---|---|---|---|---|---|---|---|
| alice29.txt | 152089 | 2.551 | 1.645 | 1.335 | 1.166 | 1.028 | 0.718 | 0.411 |
| book1 | 768771 | 2.717 | 1.816 | 1.569 | 1.426 | 1.311 | 1.104 | 1.115 |
| enwik8 | 100000000 | 1.989 | 1.187 | – | 1.098 | 0.948 | – | – |
| linux-1.2.13.tar | 9379840 | 1.441 | – | 1.010 | 0.991 | 0.837 | – | – |
- 2021: LibNC – библиотека с отворен код за манипулиране на тензори.
- 2021: NNCP – архиватор на текст, базиран на невронни мрежи (базиран на LibNC), спечели първото място в международния бенчмарк за компресиране на големи текстове и все още го държи (декември 2023 г.):
- Помощната програма ts_zip е трансформирана в онлайн услугата TextSynth за допълване на текст, базирана на езиковите модели GPT-J 6B и GPT-NeoX 20B. Сега именно чрез тази услуга се получава достъп до различни езикови модели и генератори на картини от невронни мрежи, като Llama2, Falcon, GPT-J, GPT-NeoX, Flan-T5, M2M100, CodeGen и Stable Diffusion. Достъпът се осигурява чрез REST API и уеб.
- 2023: TextSynth Server. Гореспоменатият сайт TextSynth е създаден през 2020 г. и е един от първите, които предоставят достъп до езиковия модел GPT-2. През 2023 г. TextSynth Server е представен в сегашния си вид, с HTML графичен интерфейс, REST API и др.
Основната услуга е безплатна, а за по-интензивно използване на REST API е наличен платен абонамент. Изглежда, че в сравнение с други подобни услуги това са доста скромни цени:
Сред най-новите актуализации на TextSynth Server през октомври са поддръжката на CUDA за версията за Windows, поддръжка на новия Mistral 7B и нова версия на ts_zip за ефективно компресиране на текстови файлове с помощта на LLM. През август версията на сървъра за графични процесори беше пусната в публичното пространство. Включени са помощните програми за команден ред ts_zip, ts_test, ts_sd, ts_chat за лесно тестване на различните модели. За прости манипулации с тензори се използва гореспоменатата библиотека LibNC. Като цяло собствената оптимизация на сървъра на Белар осигурява много висока производителност на езиковите модели на малки и големи клъстери от CPU и GPU. Едва ли някой може да напише нещо по-производително, с изключение на Жюстин Тани, който преди месец опакова LLM в един двоичен файл (модел Llama с всички тегла, изпълнимия файл llama.cpp).
Безплатната версия на сървъра TextSynth може да бъде изтеглена във версии за Linux и Windows. Това е проста двоична програма, която е лесна за инсталиране и стартиране. На същата страница има списък на наличните езикови модели и скоростта на генериране на токени в секунда на Epyc 7313 (до 21), RTX A6000 (до 132) и RTX 4090 (до 164). Безплатната версия на сървъра има редица ограничения в сравнение с комерсиалната версия.
Очевидно Фабрис все още работи по този проект. Това не е изненадващо, тъй като невронните мрежи (особено LLM) са най-интересната област на изследване за много разработчици в днешно време. Всеки иска да участва във възможната поява на силен изкуствен интелект. Други герои от нашата рубрика „Най-големите програмисти на 21 век“ също работят по него: Джон Кармак, Джеф Дийн и споменатата Джъстин Тъни. И не само те, разбира се.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!






