Pull to refresh
3000.88
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Гений 21 века. Чем сейчас занимается Фабрис Беллар

Level of difficultyEasy
Reading time9 min
Views55K
Некоторые программисты настолько хорошо известны, что не нуждаются в особом представлении. Наверное, Фабрис Беллар — самая яркая звезда современности. Автор мультимедийного комбайна FFmpeg, эмулятора QEMU и десятков других полезных программ — абсолютный гений и пример программиста 100х, который в одиночку принёс больше пользы миру, чем многие корпорации с сотнями разработчиков. В общем, все знают Фабриса — про него ещё была статья на Хабре двенадцать лет назад…

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

▍ Проекты


Напомним список основных разработок Фабриса. Список выглядит очень впечатляюще. Как мы уже говорили в 2011 году, многие из этих программ достойны стать венцом карьеры программиста. А он сделал их все. И продолжает работать. Вот небольшая часть его проектов (ещё пара десятков в архиве):

  • 1989-1990: LZEXE — исполняемый DOS-файл для прозрачного архивирования/разархивирования файлов. Многие пользовались этой программкой в 90-е. Как видим, это первый значимый проект Фабриса для пользователей всего мира. Он написал LZEXE на ассемблере 8086 в возрасте 17 лет, когда ещё учился в школе, на основе опенсорсного алгоритма LZSS. Надо было обязательно писать на ассемблере для бинарника минимального размера, чтобы заархивированные файлы вместе с разархиватором занимали меньше места, чем оригинальные файлы. Иначе идея не имела смысла.

  • 1995: Реализация на С метода Полларда для эффективных операций перемножения с помощью быстрого преобразования Фурье (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 млн разрядов). Исходный код на С этого вычисления занимает 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 КБ кода x86 без зависимостей. Это не самая быстрая и не самая маленькая библиотека, но она старается быть простой, используя при этом асимптотически оптимальные алгоритмы. Основные арифметические операции имеют почти линейное время выполнения. Пример TinyPI из этой библиотеки вычисляет миллиарды знаков числа пи по формуле Чудковского.

  • 2000: FFmpeg. Известная программа для обработки мультимедийных файлов, включая редактирование и транскодирование. Первые несколько лет Фабрис Беллар сам поддерживал этот проект (Open Source Multimedia System), а потом передал сообществу.

  • 2001: Миниатюрный компилятор TCC (Tiny C Compiler или TinyCC), который позволяет компилировать и исполнять программы в условиях ограниченного места и памяти, например, на дискетах. Препроцессор, компилятор, ассемблер и линкер в сумме занимают меньше 100 КБ в одном бинарнике, работает примерно в девять раз быстрее GCC.

  • 2002: TinyGL, маленькое, быстрое и свободное подмножество OpenGL.

  • 2002: QEmacs (Quick Emacs) — клон emacs, в котором Фабрис начал изучать алгоритмы рендеринга Unicode, работу с текстовыми буферами и парсинг XML/HTML/CSS. Например, здесь можно прямо в редакторе просматривать результат рендеринга HTML:



  • 2003: QEMU — опенсорсный эмулятор с динамической трансляцией кода под архитектуру одного процессора в код под другую архитектуру, причём не отдельными инструкциями, а целыми блоками кода, что обеспечивает высокую производительность. Это был первый в мире эмулятор CPU, который показал близкую к нативной производительность.


  • 2004: Загрузчик TinyCC, который компилирует на лету и загружает ядро Linux прямо из исходников. На старом Pentium 4 2,4 ГГц компиляция ядра занимала менее 15 с.

  • 2005: Передатчик сигнала в формате DVB-T с компьютера на телевизор.

  • 2009: Мировой рекорд по вычислению числа пи, поставлен на Intel Core i7 с вышеупомянутой утилитой TinyPi (софт).

  • 2011: JSLinux, эмулятор компьютера с Linux на JavaScript. Не только Linux, но и другие ОС теперь можно запустить в браузере.

А вот дополнение к этому списку с момента публикации прошлой статьи:

  • 2014-2018: Формат сжатия изображений Better Portable Graphics (BPG), основанный на подмножестве алгоритмов из видеокодека HEVC. Новый формат предлагался в качестве замены JPEG. Его преимущество перед всеми другими форматами (JPEG, JPEG 2000, JPEX XR, WebP) можно наблюдать в визуальной демонстрации.

  • 2019-2023: QuickJS — маленький встраиваемый движок JavaScript всего из нескольких файлов на С, без внешних зависимостей, 210 КиБ кода для простой программы 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. В зависимости от размера модели, эффективная скорость сжатия варьируется от нескольких килобайт в секунду до нескольких сотен килобайт. Ещё одно важное условие — для архивирования и разархивирования должны использоваться одни и те же модели GPU и LLM, причём видеоускоритель желательно с большим количеством памяти. Например, для разархивирования файлов с моделью rwkv_169M нужно, 0,38 ГБ видеопамяти, с моделью pythia_deduped_70M — 6,61 ГБ, с falcon_7B_q4 — 8,44 ГБ.

    Уровень сжатия 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), занял первое место на международном конкурсе на лучшее сжатие текстов Large Text Compression Benchmark и удерживает его до сих пор (декабрь 2023 г):


  • Утилита ts_zip трансформировалась в онлайновый сервис по дополнению текста TextSynth на основе языковых моделей GPT-J 6B и GPT-NeoX 20B. Сейчас через этот сервис предоставляется доступ к разным языковым моделям и нейросетевым генераторам картинок, таким как Llama2, Falcon, GPT-J, GPT-NeoX, Flan-T5, M2M100, CodeGen и Stable Diffusion. Доступ предоставляется через REST API и веб.

    Модель Mistral 7B

    Нейросети можно использовать для завершения текста, ответов на вопросы, классификации, общения, перевода, создания изображений. Например, функция завершения текста использует языковые модели Mistral 7B, Llama2 7B и Falcon 7B, которые считаются одними из лучших в этом размере, а также настроенную специально для ответов на вопросы модель Flan-T5-XXL. Больше информации см. в документации.

  • 2023: TextSynth Server. Вышеупомянутый cайт TextSynth был основан в 2020 году и одним из первых предоставил доступ к языковой модели GPT-2. В 2023 году был запущен TextSynth Server в его нынешнем виде, с HTML GUI, REST API и проч.

    Базовый сервис бесплатен, для более интенсивного использования REST API можно оформить платную подписку. Кажется, что по сравнению с другими аналогичными сервисами это довольно скромные тарифы:



    Из последних обновлений TextSynth Server в октябре — поддержка CUDA для версии Windows, поддержка новой модели Mistral 7B, новая версия ts_zip для эффективного сжатия текстовых файлов с помощью LLM. В августе версия сервера для GPU была опубликована в открытом доступе. В комплекте утилиты командной строки 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 века»: Джон Кармак, Джефф Дин и упомянутая Джастин Танни. Ну и не только они, конечно.

▍ Биография


Фабрис Беллар родился в 1972 году в Гренобле на юге Франции, в возрасте девяти лет начал программировать на научном калькуляторе TI-59. Когда ему было 11 лет, семья купила первый компьютер TI-99/4A с интерпретатором для TI BASIC, довольно простым языком для изучения школьником: по одной команде в каждой строке, как в калькуляторе.


Amstrad PC1512

В пятнадцать лет купил собственный персональный компьютер Amstrad PC1512 и начал программировать по-серьёзному. Ещё в школе написал LZEXE, первый в мире популярный архиватор под DOS (на том самом домашнем компьютере) и закачал его на несколько BBS, откуда программа разошлась по миру.

В 18 лет поступил в Политехническую школу Парижа (Ecole Polytechnique), это ведущий в стране инженерный вуз, который ставит главной целью развитие критического мышления, а не трудоустройство выпускников. В 1996 году (24 года) продолжил обучение в Télécom Paris, тоже крупнейший инженерный университет и научно-исследовательский институт. В 1997 году открыл формулу Беллара для вычисления числа пи.

Фабрис также проходил стажировку в IRISA, одной из крупнейших научно-исследовательских лабораторий Франции в области компьютерных технологий. Там он написал Harissa (быстрая виртуальная машина Java) и некоторые другие проекты.

Многие из его лучших проектов сделаны в рамках студенческих работ или на их основе. Например, выпущенная в 2002 году графическая платформа TinyGL (40 КБ, замена OpenGL) ведёт своё начало из 3D-движка VReng Virtual Reality Engine, над которым Беллар начал работу в 1998 году.

Значительным годом для Фабриса стал 2000-й, когда он начал писать FFmpeg, универсальную утилиту для обработки мультимедийных файлов и потоков. Теперь эта программа по сути незаменима в опенсорсных проектах.

В последующие годы трижды выигрывал конкурс минималистичного и обфусцированного кода на C: в 2000 году за вычисление наибольшего известного простого числа с помощью FFT, в 2001 году за самый маленький компилятор размером 3 КБ (в категории «Наилучший обход правил конкурса», эта разработка стала базой для TinyCC), а в 2018 году за лучшее сжатие изображения.

Сейчас Фабрис Беллар ведёт скромный образ жизни, не имеет страниц в соцсетях (даже в LinkedIn его нет), редко показывается на публике, за всю жизнь дал только одно интервью (зеркало). Одно из его редких появлений случилось в 2007 году на конференции MIX 07, где он сфотографировался с Мигелем де Икаса, основателем проектов GNOME и Mono:


Да и зачем где-то появляться, если работа говорит сама за себя.

Абсолютно все программы Фабриса Беллара всегда публиковались с открытым исходным кодом, даже такие уникальные вещи как FFmpeg и QEMU. Он не пытался на них никак заработать. Судя по всему, его не интересуют ни слава, ни деньги — только интересная работа и головоломки, желание решать задачи, которые ещё никто не решил, чтобы помочь людям. Вовсе не для славы, а потому что он не может иначе. Нерешённая задача — это как вызов, который у тебя нет возможности не принять. Это как заполнить пустоту, существование которой трудно выносить. Поэтому программы он публикует в опенсорсе и старается сделать так, чтобы они были доступны всем желающим.

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

Видимо, в рейтинге ныне живущих программистов Фабрис Беллар попал бы в топ, если не на первое место.


Помоги спутнику бороться с космическим мусором в нашей новой игре! 🛸
Tags:
Hubs:
Total votes 204: ↑201 and ↓3+198
Comments49

Articles

Information

Website
ruvds.com
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
ruvds