Unlocking the Power of Large Language Models: Interactive Guide to GPT Fundamentals | 03 декабря 2023 года, 16:50

шикарный интерактивный самоучитель по основам построения Large Language Models (GPT). очень рекомендую всем рнтересующимся хотя бы взглянуть. лучше открывать с компа, на телефоне ничего не поймешь, там экранное место надо

https://bbycroft.net/llm

Морские огурцы: природа, которая удивляет и изумляет | 02 декабря 2023 года, 19:56

Закупались сегодня в магазине Lotte Plaza. Смотрите, тут продается замороженный морской огурец или голотурия или вот заморженный, это съедобный трепанг. Это вообще забавное создание. По сути это морской аналог червяка. Только он значительно более “овощ”, чем червяк. С одной стороны у него рот, с другой – анус, а между ними труба. Эти анусом они дышат и как недавно выяснилось еще и немного едят (рот у них все-таки в приоритете). А еще интересно, что морские огурцы способны быстро становиться жесткими или размягчаться в полужидкое желе, в зависимости от обстоятельств. А еще они могут регенерировать все внутренние органы и восстанавливаться даже после разрезания на две или три части. Описаны даже случаи бесполого размножения через деление напополам. В общем, интересные создания, но есть я такое не буду

Всё это — игра в программирование жизни | 02 декабря 2023 года, 16:15

Я когда начал разбираться со школьной биологией по состоянию на меня сорокалетнего, меня очень зацепила одна штука, которую наверное в мои годы в школе не проходили, а сейчас — не знаю. Но она очень любопытная.

Это про то, как организм знает, какие клетки нужно создавать и где. Это довольно нетривиальный вопрос, и там столько пластов смыслов и объяснений, что я даже не знаю, с чего начать.

Сначала самые основы, из школьной программы. Ну вот смотрите, в нашей ДНК есть всего 19969 кодирующих генов в ДНК (плюс еще 63 494 генов некодирующей ДНК, которую называют еще “мусорной”). Кстати, Y-хромосома была секвенирована только в этом году, но в целом геном человека расшифрован. Он по большей части не совсем до конца понятно что делает (по меньшей понятно), но исходный код у нас по крайней мере есть. По сути это файлик 3.3 Гб.

Так вот, каждый из этих 20000 генов кодирует белки для всякого разного, например как строительный материал для 230-400 типов клеток. Белок – это такая трехмерная структура из аминокислот. Всего 26 разных аминокислот существует. Легче себе представить, как запутавшаяся нитка с бусинками, где одни бусинки 26 видов отталкиваются друг от друга, другие притягиваются друг к другу, короче, что-то одно если не так сработало, и весь белок в виде запутавшейся нитки с бусинками может получиться, а может и не получиться. Вот таких аминокислот, бусинок, как сказал, 26, и последовательность определяет какой белок получится. Собственно, “программа” представляет собой набор “триплетов” (трехзначный код), которые транслируются в аминокислоты, а те выходит создают в итоге белок, который выплевывается в организм и дальше встает на нужное место. Кстати, отдельно ещё интересен факт, что этот генетический код один на все живые существа на планете (Ну почти, очень очень редкие исключения есть, но там совсем мелкая разница). Ну еще стоит напомнить, что эта программа с первого дня жизни форкается миллиарды раз, и в каждом из нас есть 30 триллионов инстансов. При копировании еще ошибки накапливаются, так что существенная часть от этих 30 трлн (вероятно, все) — это слегка измененные по отношению к друг другу программы. Ну да, еще стоит отметить, что люди различаются одним процентом ДНК. То есть, 99% делает нас такими, чтобы мы в принципе выживали как-то, а 1% добавляет уникальности — все, начиная от черт лица, заканчивая манерой мыслить.

Так вот, к чему это введение. Вопрос, как настолько сложный организм может быть запрограммирован настолько простой программой (напомню, всего 3Гб кода, из которого хорошо если 1% вообще по делу, остальное хрен знает что).

И вот что выяснилось. Это эволюция сделала эту программу такой, что она изменяет сама себя в определенном, хорошо отлаженном, направлении, допуская совсем немного случайности в этот процесс. Вот представьте, у вас есть программа, которая считает и выдает число пи. А дальше в этой программе убираются три байта, и она начинает выдавать число е, а дальше убираются еще какие-то три байта, и она начинает выдавать постоянную планка, а дальше убираются еще пять байт, и вот тебе и константа g. Хорошая аналогия — пластинка. Ставите — играет одну музыку. Дальше в ней хитрым образом делаются царапины, что игла прыгает туда-сюда, и музыка уже другая, но это все еще музыка, а не шум. Если представить себе строение организма как набор интераций в пределах клетки, каждая из которых рождает белок и куда-то его прилепляет, то на каждой N+1 итерации эта программа претерпевает небольшие коррекции, запланированные природой методом проб и ошибок, и таким образом условно через условно 100 поколений клетка начинает плодить белки для условно печени, а потом еще через условно 300 поколений для условно кожи. Эти коррекции называются факторами экспрессии генов. Фактически это всякое плавающее в клетке, которое или пришло снаружи, или было рождено на предыдущих поколениях. Если оно пришло снаружи, то это может быть даже из окружающей среды, а могут быть химические сигналы из других частей организма. Например, рождается ребенок у мамы, и очевидно, клетки об этом “знают”. Вот этот механизм меня в свое время очень удивил. Как можно так написать программу, чтобы она работала на протяжении всей жизни организма по-разному в зависимости от результатов предыдущих итераций! Но как мы на своем опыте видим, оно как-то работает, и даже более-менее надежно.

Если проводить аналогию с программированием, то программа у нас одна и та же, но вместо параметров она принимает на вход “маску”, экранирующую некоторые из инструкций. Маска подобрана так, что получившаяся программа продолжает работать и делать что-то полезное. Ну это как с тем примером, была программа для генерации числа пи, применили маску, получилась программа для генерации числа e. Эволюция перебирала разные маски и выживали те, в результате которых полезное продвигало все на итерацию вперед, на N+1. Для многоклеточных существ это все еще происходило асинхронно и синхронно одновременно. Асинхронно, потому что клетка А не знает о состоянии клетки Б и в какой итерации та находится. У обеих клеток программа что-то выдает и продвигается на следующую итерацию. А синхронно потому что ферменты (считай часть маски А) могут зависеть от результатов работы Б, то есть, Б должна предшествовать, значит синхронность налицо. И вот этот механизм очевидно чаще не работает, чем работает, но поскольку он испытывается на уровне клеток (у нас их 3 триллиона) и на уровне живой единицы (в случае бактерий это вообще число, не поддающееся подсчету, потом одноклеточные, потом многоклеточные, там какие-то дикие числа) и все это в течение миллионов лет, то вполне верится, что случайные “маски”, приводящие к продвижению дальше к N+1, встречаются не так уж и редко. Вот так постепенно, и получилось то, что получилось.

В среднем клетки делятся 52 раза, потом умирают (апоптоз) (исключение – раковые клетки) Это называется пределом Хейфлика и связано с теломерами — возможно вы слышали про эксперименты по продлению жизни за счет восстановления теломер. Клеток у нас три триллиона, время жизни у разных клеток разное. ДНК в каждой клетке своя, плюс еще и из-за неизбежных мутаций слегка другая, чем у соседа. В итоге, программа пальцев рук, ног, рук, ушей там в виде одного события, которое срабатывает симметрично в одно и то же время в какой-то итерации. И следующие итерации просто доделывают начатое. Если что-то сбоит на уровне генов, то проблемы получаются сразу с двух сторон. А если с чем-то критичным, то оно на следующих итерациях начинает гнать неожиданные ферменты, которые все ведут не туда и чаще всего заканчивается выкидышем. В общем, там жизнь кипит 🙂

Второе интересное — это эпигенетика. Она как раз про факторы экспрессии. Считается, что когда ребенок рождается, то все, что он получает, это гены от папы и мамы. На самом деле он еще получает какой-то уникальный набор этих внешних факторов экспрессии генов из маминого организма. Более того, результат работы ДНК этого ребенка в чреве мамы попадает в организм мамы (хотя там как бы есть плацентарный барьер, но преодолевают), и дальше участвует в процессах следующей беременности, а то и влияют на организм мамы. Как участвует — непонятно, может там вообще все на грани слова “ничего”, но то, что в организме второго ребенка находятся приветы от организма первого ребенка — это научно доказанный факт. Гуглите fetal microchimerism.

Вообщем, все это дико интересно. И кажется, это бездонная бочка знаний. Я бы сейчас школьникам порекомендовал не в айти идти, а в life science. Самые значительные открытия в следующих 10-20 годах, я считаю, будут там. Ну и да, довольно скоро и мозг подключат к AI. Все для этого уже есть, осталось слегка “допилить” (как раз лет 20 должно хватить)

Комарийская загадка | 30 ноября 2023 года, 21:30

Вот интересно. Не помню что я там программировал, но в процессе понял, что меня ни разу не кусали комары в наших краях. Я ни разу не слышал жужжание комара дома, хотя балкон мы летом открываем нараспашку. Пруд с лягушками у нас ближе 5 мин пешком или в десяти минутах, если ты комар. Я сегодня читал про самодельное лазерное ПВО от комаров с радаром и понял, что построй я его, мне будет тупо негде тестировать. И написал на nextdoor, соседи, куда делись комары?

Ожидал ссылок на успешный успех с подсаживанием комариных диверсантов. Хотел по итогам пост написать. Такой эксперимент правда внашем штате проводится – ловят комаров, делают им в попу укол с ГМО зельем, и выпускают в природу. Они радостные на ближайшем пруду заводят семью, и вскоре комариная жена начинает замечать, что залетный папаша делает только сынов, а дочки улетают в комариный рай ещё не родившись. Сыночки с папиными генами летят заводить собственные семьи с таким же результатом, начинается дисбаланс, невест начинает не хватать, и в итоге случается большая комариная погибель.

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

Я считаю это все Юки. Он щёлкая зубами ест все летающее, и видимо в комарином комьюнити наш дом помечен красным крестиком. А когда к нам приезжает с Лизой кот, то двумя.

Сравнивая снэпшоты: встреча двух миротворцев | 30 ноября 2023 года, 15:37

Опубликовал статью на hybrismart про свою утилитку по сравнению снэпшотов файловых систем. Забавный момент, что я ее делаю второй раз — первый делал еще под DOS, чтобы делиться с друзьями библиотекой вареза по их выбору. Сейчас у утилитки не только это применение, конечно, возможно 🙂

Если вкратце, то работает это так. Вася делает dir /S на своей виндовой машине или ls -lR на своем маке и присылает файл Пете. Петя открывает это в моей программке, выделяет сотню файлов из разных директорий, и формирует файл-запрос, который по сути скрипт или плоский перечень файлов и шлет его Васе. Вася получает этот скрипт, запускает его на машине, получает архив только с выбранными файлами, и отдает уже архив Пете. Петя распаковывает архив, и все файлы занимают соответствующие места в его файловой системе, с сохранением всех директорий.

Второй кейс – это когда на обеих машинах Васи и Пети есть один и тот же большущий архив чего-нибудь, который предполагается быть одним и тем же, но всякое бывает, и что-то где-то попортилось или удалилось, что не должно было попортиться или удалиться. Или наоборот, создались какие-то лишние файлы, которые делают поведение системы у Пети иным, чем у Васи, хотя казалось бы исходный код, который под контролем версий, у них одинаков. Как понять что? Вот тут и приходит на помощь программка. Каждый делает снэпшоты директории со всеми поддиректориями, и дальше программка это сравнивает и показывает разницу. Другими способами сравнить очень сложно. Особенно, если Вася и Петя сидят на разных операционках или на одной операционке с разными языками, или на одной операционке разных версий или модификаций.

Исходный код прилагается. Требует Python/QT.

https://hybrismart.com/2023/11/30/introducing-fsdumpviewer-the-tool-for-file-system-ls-lr-snapshot-comparison-and-synchronization/

Watch Out for Paper Overload on Amazon! | 29 ноября 2023 года, 18:17

Когда покупаешь бумагу на Амазоне, главное случайно не ошибиться с выбором объема. А то так приедешь домой, а перед домом 20 тонн бумаги для принтера, а кредитка на $35700 меньше стала. И дождь собирается

Кстати, по-английски 500 листов бумаги – это ream. Я только что заказал 3 reams.

Секреты Муравьёв | 28 ноября 2023 года, 23:48

У Сапольски интересное читаю. Известно, что у пчёл и муравьёв есть своё средство коммуникации, посредством которого они передают информацию о том, где еда и в какой стороне. За это открытие Карл фон Фриш получил Нобелевскую премию по физиологии или медицине. Но вот что интересно, если возвращаются несколько пчёл, кто определяет, кого из них слушать и почему? В итоге выбирается же как-то один вариант. Ближайший или лучший.

И вот что пишет Сапольский. Важно, что чем лучше источник пищи, найденный разведчиком, тем дольше он выполняет одну часть танца — таким образом передается информация о качестве. На втором этапе другие пчелы случайно летают где-то вокруг, и если они натыкаются на танцующего разведчика, они летят проверить источник пищи, о котором сообщает разведчик… и затем возвращаются, чтобы тоже танцевать новости. И поскольку лучший потенциальный источник = более долгий танец, вероятнее, что одна из случайных пчел наткнется на пчелу с великими новостями, а не на хорошими. Это увеличивает шансы, что вскоре будет два танцора с великими новостями, затем четыре, затем восемь, пока вся колония не сойдется на оптимальном месте. И первоначальный разведчик с хорошими новостями уже давно прекратит танцевать, наткнется на танцора с великими новостями и будет привлечен к оптимальному решению.

Заметьте — нет пчелы, принимающей решения, которая получает информацию о обоих местах, сравнивает два варианта, выбирает лучший и ведет всех туда. Вместо этого более долгий танец привлекает пчел, которые будут танцевать дольше, и сравнение и оптимальный выбор возникают неявно; это суть интеллекта роя.

Аналогично, предположим, что два разведчика-пчелы обнаруживают два потенциальных места, которые одинаково хороши, но одно в два раза ближе к улью, чем другое. Пчеле с местными новостями потребуется вдвое меньше времени, чтобы добраться до своего источника пищи и обратно, чем пчеле с дальними новостями — что означает, что удвоение двух, четырех, восьми начинается раньше, экспоненциально заглушая сигнал пчелы с дальними новостями. Вскоре все направятся к ближайшему источнику.

Муравьи находят оптимальное место для новой колонии таким же образом. Разведчики выходят, и каждый находит возможное место; чем лучше место, тем дольше они там остаются. Затем случайные странники разбредаются с правилом, что если вы наткнетесь на муравья, стоящего на возможном месте, возможно, стоит проверить это место.

От себя добавлю: известно, что муравьи общаются с помощью химических сигналов – феромонов. Когда разведчик находит хорошее место, он может оставить феромонный след, ведущий к этому месту. Если другие муравьи следуют за разведчиком (или просто пересекают путь того муравья), они с какой-то вероятностью следуют пот пути, и, если они также находят место приемлемым, они усиливают феромонный след, делая его еще более привлекательным для последующих исследователей. Это создает положительную обратную связь: чем больше муравьев посещают место, тем сильнее становится сигнал.

Потом более короткий путь означает более сильно пахнущий феромонами. Они же испаряются со временем. Поэтому при наличии вариантов муравьи выбирают более короткий.

От себя добавлю, что похожим образом лишайники находят выход из лабиринта.

Лучшее качество превращается в более сильный сигнал для привлечения, который становится самоподдерживающимся.

Есть такой ученый, Дебора Гордон. Она в своей работе показывает дополнительный уровень адаптивности: насколько далеко разбредаются муравьи, сколько времени они проводят на хорошем месте по сравнению с посредственным и так далее. Она показывает, что эти параметры варьируются в разных экосистемах в зависимости от того, насколько обильны источники пищи, насколько они разрозненно распределены и насколько дорогостоящим является поиск пищи (например, поиск пищи более затратен с точки зрения потери воды для пустынных муравьев, чем для лесных); чем лучше колония эволюционировала для того, чтобы подстроить эти параметры идеально под свою конкретную среду, тем выше вероятность того, что она сможет выжить и оставить потомство.

Интересно вообще как природа все устроила.