Прогрев
Здравствуйте дорогие читатели хабра, сейчас утро воскресенья, пожалуй невероятно удачный момент для спонтанного написания статьи на хабре, надеюсь в этом вы согласитесь со мной :) что ж, here we are!
Я знаю, вы все любите инфоцыганские истории успеха, что ж побалую вас пожалуй! Но и про жызу мы конечно же не забудем. Итак приступим:
Инстаграм: я просыпаюсь утром в Cupertino, мне нужно выпить чашэчку кофэ и принять ванну!
ГосУслуги: возвращаюсь с того света когда звенит будильник в 8 утра, потому что просидел до 2-х ночи занимаясь изучением ютюба, кофе я не пью, подрываюсь помыться, ровно в 8:35 надо быть в машине, чтобы отвезти ребенка в школу и оттуда на работу.
Инстаграм: мы с улыбкой садимся в свою теслу и едем в школу!
ГосУслуги: мы как в армии по секундомеру замеряем каждую минуту надевая штаны, носки и т.д. И нет, госуслуги, на этот раз моя взяла, tesla model y действительно клевая :)
Инстаграм: приезжаю на работу в VmWare в офис в Palo Alto, меня ждет продуктивный день и решение проблем мирового уровня с крутой международной компании!
ГосУслуги: не ждёт! И мне даже придется заниматься унылой какой-то рутиной а не тем что мне нравится.
ГосУслуги на ГосУслугах: censored - слишком темная сторона моей жизни, вам пока рано об этом знать! Скажем так, слухи о клёвости биг теха сильно преувеличены :)
Когда хочется праздника
Инстаграм: на работе один успешнее другого и все обсуждают трэнды, стонки и Илью Маскова.
ГосУслуги: "всегда говори да" (c). Обсуждаем мы значит Эй Ай как завещал Сундар Пичай-эй-ай-эй-ай-эй-ай.
ТикТок: Мы шли по офису и меня поразило светом капитализма и в моей голове появилась отчетливая идея которая улучшит в сотню раз успех моей компании!
ГосУслуги: в голове бесполезный новостной шум от всего этого тик-тока. И тут у меня возникает лол кек идея как придумать себе приключений на месяц вперед. На самом деле это была просчитанная многоходовочка, но я вам не расскажу все сикретики и не мечтайте! А если мечтаете, то так и быть, добро пожаловать ко мне в телеграм в мой ai альтерэго канал
Инстаграм: мы могли бы использовать ИИ чтобы анализировать логи и находить проблемы в работе нашей базы данных
ГосУслуги: баги сыпятся в трекер и добрую половину времени программеры тратят на то чтобы возиться с этим, так сказать успехом.
Инстаграм в моей голове: ща запилю мега софтину и приду к успеху моментально, стану наконец-то красавчиком! Куплю баленсиага и схожу в барбершоп!
Одноклассиники: ты сидишь с утра до ночи целый месяц и выглядишь как айтишник!
Just Do It
Ну что ж, пора действовать! Я пообещал менеджеру безудержный успех, получил 3 недели на исследования и отбросили лирику в сторону и вошел в любимое состояние - deep dive.
Итак, мне нужно было было как-то проанализировать логи (обычные джаванские logback логи) с помощью какой-нибудь llm-ки, раз уж у меня тут образовался микро стартап, то я решил действовать как хипста папа. Первым делом я попытался понять, "что происходит?" , а как мы знаем, самое главное что нам надо сделать, это как можно дешевле проверить теорию. Я пошел на поклон к чату дтп. Бинго!!! Если я смогу сделать примерно что-то похожее, когда я спрашиваю ИИ и оно мне молвит человеческим голосом! Это то что мне надо.
"Его борьба"
Первым делом я попал на huggingface.co самый крутой сайт (целая инфраструктура) для ИИ. Это по-сути аналог github только для ИИ. Сразу понял, что меня ждет много чего нового и начал читать документацию, как есть.
Узнал что есть дата сеты на которых тренируют модели (по сути мега гигантские таблички с записями, например imdb, сами можете посмотреть, там все наглядно).
начал поиск моделей для решения проблемы и конечно же первым делом полез за лламой и получил по щщам, потому что цукерберг растил сво ягодку не для таких мужланов как я) мой запрос за месяц так никто и не принял.
следующим был конечно же mistral, который доходчиво объяснил мне что я сынок со своими 32 гигами оперативы на макбуке, что при таком раскладе ждать ответ на запрос надо будет 4 минуты.
но не беда, я накопал много клевых моделей: openllama, tinyllama, gpt2(да да, тот самый чат дтп только версии 2), bert-base-uncased, phi-1.5, phi2 и прочие
Я подумал, что до успеха рукой подать и решил запихать в чат дтп еще один вопрос к логам и он любезно мне сообщил, о том что мол братюня ты конечно крашеный хипста и тебе надо все и сразу, но только вот есть такое понятие как Context Window и оно всего 4к токенов и куда ты собрался запихать 100мб логов это не мои проблемы!
От такой новости я сразу приуныл... и понял очень много о экспертах вещающих за всемогущий ИИ, эксперты просто преисполнившись в своей экспертности прочитав пару статей от рбк бизнес решили, что понимать техническую составляющую не нужно и ИИ нас всех укакошит завтра потому что он всемогущий. Реальность конечно же оказалась чуть-чуть не такой. И всемогущим оказался маркетинг, впрочем как обычно.
Пришлось включать инженера и начинать думать, было больно, неприятно. Я тут же откопал такую вещь как RAG но ничего не понял, потом мне мой друг из ФБ, привет Мишаня! Прислал статейку на RAG опять, и я опять ничего не понял, потому что думать это не приятно.
Конечно же первое что вылезло в поиске после HF (huggingface) был langchain который обещал светлое будущее и почти что коммунизм незамедлительно. Я установил ollama-у и это конечно кайфовая тулзовина, она теперь в моем арсенале, люблю ее.
Но RAG я конечно не осилил, потому что хипстерский лангчейн лезет вечно в интернет и потом не может подключиться к своему серваку потому что у них вэйтлист мемберов и ниче нельзя сделать (я потом нашел как это отключить и все равно научился пользоваться лангчейном: export LANGCHAIN_TRACING_V2="false")
ГосУслуги: После всяких скитаний по помойкам я таки осилил RAG с помощью HF и sentence-transformers
Лирическое отступление - RAG это семантическая база данных которая позволяет делать запрос в терминах смысла а не синтаксиса и когда ты получил данные ты уже эти данные которых немного загоняешь в llm-ку.
В итоге я когда сделал это всё, запрос к БД (кстати, минутка рекламы квадратнта) я понял, что пора приступать к самому главному и стремному шагу!
А ты бы меня любил бы если бы я не родилась???
Да да, вы правильно догадались, чертов prompt engineering.
Настало время разобраться в этом вопросе. Так как я думал о промптинге уже достаточно долго, потому что это насущный вопрос при общении с чатом дтп, то я сформилуровал проблему для себя так:
Hidden text
What important truth do very few people agree with you on
Тащусь от Питера, не могу, простите :)
P. S. кто не читал, всем срочно бежать покупать и читать Zero To One
Какой вопрос я должен задать, чтобы правильно сформулировать мой вопрос?
Расшифруем:
Мета вопрос - в каком виде я должен задать вопрос к ллм к моим логам... к вселенной, чтобы получить правильный ответ? Правильно сформулированный вопрос дает 80% ответа. Это самая главная мудрость
от Стэтхама, иначе ничего не получится. В моем случае мне нужен был мета вопрос, чтобы научить ЛЛМ-куловить рыбупонимать что мы ищем и зачем.Вопрос - это уже вопросы которые я буду создавать из мудрости которую я взял из мета вопроса
По-сути, если на крестьянском - вот у меня есть какой-то текст, как извлечь смысл из этого текста и что-то из этого в итоге получить полезное?
Кстати, настоящие хипста не идут за толпой, а значит давайте будем не такими как эта ваша толпа и будем использовать перплексити! Очень рекомендую, мне капец как нравится.
Шеф все пропало
Когда я понял, что поиском по смыслу в базе данных куда я положил все мои записи из лга не дает мне нужной мне точности, то я приуныл, а через пару дней мне презентацию делать...
Инстаграм: с модным бумажным стаканчиком в руке в красивом офисе Broadcom-а в Palo Alto (да да, ВмВару купил бродком).
А я так и не знаю толком что мне презентовать.
Такие прекрасные моменты отчаяния обычно самые интересные. Пришлось выдохнуть и подключить уже чувства! То есть интуицию и отпустить полет мысли.
А когда ничего не получается, то мы делаем что? Нет не правильно, не leetcode (хотя если уволят после всех твоих ахахаха розовых обещаний и лапши то таки придется сесть и за него). Перед литкодом можно подключить логику.
"Производная не может мыслить, следовательно не существует!"©
Итак, у нас есть сотня миллионов записей и AI который не знает, что с этим делать и я, который не знает, что делать с ИИ и логами. И тут размышляя над мета вопросом я допёр! Я думаю про запись в логе как о данных смысл которых понимаю Я, я значит если в таком виде я задам вопрос к ллм, то все мои вопросы превратятся в запросы! Sql запросы! (Бонд, Джеймс Бонд! Ага)
И тут я понимаю, что входная точка моего фреймворка на основе мета запроса, это то, что я смотрю на запись в логе как на черный ящик и спрашиваю ллм-ку - хей дружище, а что в этой строке написано (вслепую, как-будто я не знаю что в ней написано)? А ведь по факту так и есть, я не знаю что написано в сотне миллионов строк текста, мне надо спросить ллм об этом.
Представим себе это как boolean переменную: true or false? Казалось бы, я начинал свою проверку теории простым вопросом к чату дтп и вернулся в итоге к тому же, это конечно крышесносная штука. Теперь когда у нас есть boolean не проблем построить формальную теорию на основе этого подхода/фреймворка.
Например я могу спросить про каждое событие они является ошибкой или нет и посчитать отношение количества ошибок к хорошим сообщениям. Дальше я могу спросить - а в этой строке там ошибка в стейт машин репликации или ошибка в стримах или в консенсусе? Например, понимание есть ли ошибка в протоколе консеснуса может быть выведена из сотни другой более мелких вопросов, как это сообщение оно повышает RANK запроса от ноды? И потом посчитать какие ноды постоянно повышали ранк запросов что означает что у нас был лайв лок в системе, потом это можно будет сопоставить с ошибками соединения, например - в 3 часа дня я знаю что был рост RANK хэй дружище, поищи как были ли ошибки соединения или перегрузка какого либо сервера в это время?
В общем можно делать реальных ИИ агентов живущих своей жизнью и постеппенно готовящися к захвату мира.
Зи Ънд
Фуух, это было интенсивненько) я написал эту статью в один присест без исправления и добавления текста!
Для тех кто дочитал до конца, вот вам награда, мои наработки кода на github
Всем удачи в поисках мета ответа!
41 или 43