Плюшевый Питон – Telegram
Плюшевый Питон
712 subscribers
32 photos
1 video
2 files
43 links
Уютный техноблог про Python, саморазвитие и искусственный интеллект. От техлида LLM из команды YandexGPT (ex GigaChat, ex MTS AI) с 12-летним опытом в NLP.

Рекламу не размещаю. По всем остальным вопросам пишите на @AlexeyMalafeev
Download Telegram
На этой неделе у меня произошло важное событие - перешёл на новую работу, ведущим ML-разработчиком в СберДевайсы. Буду помогать делать GigaChat умнее, в частности, техлидить одно из направлений, связанных с alignment. Пока что довольно много стресса, большой поток новой информации. Надеюсь, быстро освоюсь и оправдаю высокие ожидания коллег! 🙏
Для джунов, которые "никому не нужны"

Поделюсь мыслями на одну животрепещущую для многих тему. Есть такой тезис: джуны никому не нужны. Об этом уже не первый год говорят, кстати. Некоторые довольно авторитетные разработчики вообще не советуют новичкам сейчас начинать изучать технологии, потому что потом всё равно не получится найти работу. Без опыта не найти работу. А без работы не приобрести опыт. Тогда и смысла нет учиться. Так? Нет, не так.

Да, согласен, джуны сейчас на рынке, как правило, не востребованы. Джуновских вакансий (или стажёрских) - раз, два и обчёлся. Нужны мидлы. Мидловых вакансий просто море. Мидлов на рынке даже близко не достаточно. Но интересно получается:

- Мидлы нужны?
- Да.
- Их не хватает?
- Да.
- А откуда взяться новым?
- Вырастут из джунов.
- Но джуны же никому не нужны?..

Получается, нужно расти с нуля до мидла. Я понимаю, как это звучит. Но можно ли с нуля дорасти до мидла без работы в компаниях? Я считаю, что можно. Только поймите правильно. Не получая практический опыт решения сложных задач - нет, конечно, нельзя. Но не работая в компаниях или на коммерческих проектах - можно. Это, кстати, путь, которым шёл я сам.

Вы не станете мидлом сразу, минуя этап джуна, это невозможно. Просто расти от джуна до мидла придётся не на (основной, оплачиваемой) работе, а где-то ещё. Нужно будет очень серьёзно поучиться.

Лучше учиться фул-тайм. Но и не фул-тайм тоже можно, только тогда на это надо закладывать несколько лет. Это самое сложное - нужно долго учиться до того момента, когда кто-то захочет платить вам деньги за ваши навыки. Экономически это может быть очень сложно. Но по-другому никак.

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

Можно учиться в вузе - это более долговременное вложение в своё будущее, но важно понимать, что не все программы одинаково хороши. Часто в них много лишнего и устаревшего. Тем не менее, (не только в топовых вузах) многие студенты устраиваются на первую работу на 2-3 курсах бакалавриата. Один мой знакомый уже после второго курса прошёл сразу на сеньорную ML-вакансию, а потом быстро вырос до тимлида.

Формальное образование - на курсах или в вузе - помогает самоорганизоваться. Но можно и самостоятельно изучить всё необходимое, и даже без денежных вложений (правда можно). Просто так сложнее и обычно дольше. Впрочем, без внутренней мотивации ничего не получится ни на курсах, ни в самом топовом вузе. Насильно вас никто ничему не научит.

Таким образом, если хочется с нуля стать разработчиком, сейчас, скорее всего, вам придётся расти не до джуна, а до мидла. Придётся накопить такой опыт, который работодатель просто не сможет игнорировать, даже несмотря на отсутствие формальной работы по специальности в вашем резюме. Но как получить этот самый опыт, если не на оплачиваемой работе по специальности? Пути известны, не скажу тут ничего нового: через пет-проекты, build your own X, изучение опен-сорса и вклад в него, неоплачиваемые стажировки, общение с более опытными людьми, чтение профильных чатов, соревнования и хакатоны.

По сути, вы будете заниматься примерно тем же, что и на "настоящей" работе по специальности: изучать новые инструменты, решать сложные задачи, (в отчаянии) дебажить код и т.д. Если вам это сейчас кажется неинтересным, скучным, слишком сложным, - действительно, тогда не стоит и начинать, наверное. Ваша будущая работа из всякого такого и будет состоять. Но если вас это не пугает и вы готовы испытать себя, то жму вам руку и от всего сердца желаю удачи!
Возможно, некоторые из вас уже видели этот пост Миланы, но я всё равно хочу им поделиться) Тем более, что тоже немного поучаствовал. Она собрала список актуальных и современных вопросов для собесов по NLP. Я тоже несколько штук закинул, которые реально задавал на собесах не раз.

https://news.1rj.ru/str/grokaem_seby/271

Именно современных списков вопросов по NLP в сети не так много, потому что область ну очень активно развивается. Тем и интересна эта подборка.

Если хотите, могу написать, как бы я ответил / какой ответ бы ожидал на какие-то из этих вопросов. Кидайте в комментарии наиболее интересные для вас. Только не предлагайте отвечать на все 100, это слишком долго 😅
Адаптация на новой работе

Сталкивались с таким? Переходите в новую компанию и будто окунаетесь в пучину хаоса. Новые люди, задачи, инструменты, процессы... Как справиться с этим, кажется, неуправляемым потоком новой информации? Да, процесс адаптации может быть болезненным. Хочется быстрее начать приносить пользу команде, перестать чувствовать себя беспомощным. По разным оценкам коллег, на полноценную адаптацию к новой работе может уходить месяц, три месяца, а может быть, и полгода. Сейчас как раз в очередной раз прохожу через это, осваиваюсь на новом месте. Отсюда возникла идея поделиться наработанными лайфхаками про то, как упорядочить хаос адаптации и свести эту боль к минимуму. 👨‍💻

Мой "айтишный" опыт включает работу в 5 разных компаниях, российских и зарубежных. Везде всё было очень по-разному. Практически ничего из стека, процессов и практик не пересекалось между компаниями, приходилось ко всему привыкать заново. С опытом выработался метод для этого, который мне помогает. Тут не будет никакого рокет сайенса, но всё равно надеюсь, что кому-то из вас этот метод пригодится.

Суть подхода. Когда пытаешься удержать всё нужное в голове - это плохо работает. Не стоит недооценивать нашу способность забывать. Впрочем, многие это понимают и пытаются так или иначе упорядочить входящую информацию - через сохранёнки в браузере, сохранёнки в мессенджерах, списки дел, специальный софт (всякие Evernote, Zotero, Obsidian, Notion) и так далее. Лично мне на этапе адаптации (и вообще в работе) очень помогает вести структурированные заметки в едином документе в обратном хронологическом порядке. А теперь чуть подробнее.

Запутанный клубок вроде бы нужной и важной информации превращается в полезное знание во-многом благодаря обработке, структурированию. Но структура должна быть достаточно простой, иначе вы не сможете её поддерживать. Просто копипастить всё подряд в один документ не работает: получается помойка, нет структуры. Делать какие-то сложные графы знаний в специализированных приложениях, имхо, тоже не очень хороший вариант - где найти на это время и силы? 🤔

Для меня баланс полезной и поддерживаемой структуры - это обычный советский гугл-док. Первым делом завожу такой на каждой новой работе. Он всегда открыт у меня в одной из вкладок браузера, легко доступен и с телефона. В этот документ с простым названием "Заметки" попадает релевантная для меня информация из множества источников: корпоративная база знаний, мессенджеры, обсуждения на встречах. Структура - множество разделов с понятными названиями, нумерованные списки с вложенностью. Удобно, если информация располагается в обратном хронологическом порядке - то есть более новое сверху.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что я туда пишу?
* Инструкции самому себе про всякие сложные процессы (такое быстро забывается)
* Ключевые факты и неочевидные моменты про практики в команде и разрабатываемые продукты
* Явки, пароли Где что лежит и к кому обращаться по каким вопросам
* Что надо сделать и что уже сделано - для отчётов, если они есть, и просто для себя
* Свои идеи

Другими словами, всё, что показалось важным и может пригодиться в дальнейшей работе. И реально ведь очень часто пригождается - как мне, так и коллегам. Например, в компании может не быть чётких и понятных инструкций / процессов по каким-то аспектам работы, а у вас они будут появляться просто как побочный эффект от этой практики (и привычки) структурирования важной информации. Это ведёт не только к повышению вашей личной эффективности, но и даёт вам возможность помогать другим людям в команде.

Несколько типичных ситуаций, как это мне помогает:
1. Внезапно пишет руководитель и спрашивает, а что было сделано по проекту X.
2. Коллега спрашивает: "А ты не помнишь, где/кто/как у нас ..."
3. Да просто когда вернулся из отпуска и надо срочно вспоминать, чем ты вообще тут занимаешься. 😅

При этом всё важное лежит в одном месте, а не рассеяно в куче сообщений, чатов, вкладок в браузере. Я нахожу нужную мне в данный момент информацию так: либо просто пробегаюсь по оглавлению разделов, если это что-то недавнее, либо использую простой полнотекстовый поиск по ключевым словам. На практике, нужная информация находится гораздо быстрее, чем если (в десятый раз?) спрашивать у коллег или рыскать по чатам, Confluence, Jira и т.д.

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

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

* Структура
* Простота и доступность
* Всё нужное в одном месте

Если дочитали до конца, спасибо за внимание! Делитесь опытом про свою адаптацию в комментариях. Желаю успехов в саморазвитии!
Please open Telegram to view this post
VIEW IN TELEGRAM
Я иногда публикую полезные материалы для начинающих, вот и сейчас наткнулся на нечто хорошее, решил поделиться. Знаете 3Blue1Brown? Это популярный канал на YouTube, на котором бывают видео с объяснением сложных математических (и не только) штук простым языком, с крутыми визуализациями. 6 лет назад его автор начал делать курс по нейросетям. Он разобрал введение в глубокое обучение, градиентный спуск, обратное распространение ошибки. Потом новых видео в этом курсе долго не было, но вот буквально на днях автор запилил два новых: визуальное введение в GPT и про механизм внимания в трансформерах. Каждое чуть меньше, чем на полчаса, на английском. Рекомендую посмотреть, и не только новичкам! Качество материалов у 3Blue1Brown всегда было на высоте, а визуализации просто супер. Визуализации вообще очень полезны, т.к. помогают сформировать интуицию о сложных и абстрактных вещах.
Мой друг Никита Соболев, core-разработчик CPython, делает свой бесплатный курс по Питону. Уникальность курса в том, что берётся одна узкая тема и разбирается на трёх уровнях сложности: junior, middle, senior. Так что как начинающие, так и опытные Python-разработчики могут найти для себя что-то новое. Но для совсем новичков курс не подойдёт. Даже junior-часть многим покажется слишком сложной.

Почему этот курс заслуживает внимания? Его автор уже не первый год работает в опенсорсе фултайм. Кроме CPython, он является core-разработчиком mypy и typeshed, членом ассоциаций Python Code Quality Authority, Django Software Foundation и Python Software Foundation. То есть этот человек очень глубоко разбирается в Питоне и может рассказать о нюансах и менее очевидных аспектах языка, чего не найдёшь в обычных курсах и учебниках.

Курс находится в разработке, пока что выпущены два видео:
мета информация: https://www.youtube.com/watch?v=SVBPkrs9UFg
первый выпуск: https://www.youtube.com/watch?v=WBKf2Cw_9Pc

С интересом посмотрел, узнал много нового, жду продолжения.
Побывал на Yandex Generative Summit в Белграде, только вчера вернулся домой, а сегодня решил написать небольшой пост про этот опыт. Всё было классно организовано, осталась масса положительных впечатлений. Польза точно была - узнал много нового, познакомился с интересными людьми. На саммите были полезнейшие доклады, но много времени уделялось и нетворкингу...

И вот как раз по поводу нетворкинга хотел написать - дело в том, что у меня не всегда хорошо получается знакомиться и общаться с новыми людьми. Как интроверт, я довольно быстро устаю от такого, потому что теряю при этом много энергии. Причём дело не в том, что мне не нравится общаться с новыми людьми. Наоборот, часто очень даже нравится, особенно с такими классными, как на том саммите. Но вот какой-то "коммуникативной выносливости" не хватает. А ещё есть застенчивость, чувство неловкости, да и старый добрый синдром самозванца. Поэтому первый час-два я ещё бодр и готов знакомиться/общаться, но потом быстро сдуваюсь и ничего так не хочу, как посидеть в тихом уголочке с телефоном. Не знаю, можно ли с этим что-то поделать.

(И нужно ли)

А как у вас с "живым" нетворкингом на всяких конференциях и митапах? Всё легко получается, чувствуете себя как рыба в воде, вас обступают и слушают, затаив дыхание? Или всё же бывают трудности?
LLM и словотворчество

Попробовал в телеграм-боте Ильи Гусева @saiga_igusev_bot дать нескольким моделям вот такую задачу:

Придумай 10 несуществующих смешных слов на русском языке, объясни их значение.

Пример: 
кринжулька - социально неуклюжая девушка, которая часто попадает в неловкие ситуации


Вот несколько вариантов, которые мне понравились:


(Sonnet-3.5)

Бубырка - маленькая, но очень надоедливая проблема в повседневной жизни.

Шмыгозавр - человек, который постоянно шмыгает носом в общественных местах.

Взбрындык - внезапный порыв сделать что-то необычное или экстравагантное.

(GPT-4o)

Пузыряк - тот, кто не может удержаться от того, чтобы надувать пузыри из жвачки в общественных местах.

Чапкозявка - маленькое и очень быстрое насекомое, которое постоянно путается под ногами.

Зевокрыл - человек, который так широко зевает, что кажется, будто сейчас взлетит.

Бряклюк - человек, который постоянно что-то роняет и издает громкие звуки, особенно в тишине.

Трясокот - кот, который все время трясет головой, как будто слушает невидимую музыку.

(gemma2-9b-abliterated) 

Фуфлобокс -  необычайно вместительная сумка, в которой можно хранить абсолютно все, даже нереальную ерунду.

Броуновский мужик -  человек, который постоянно находится в движении, как частицы в броуновском движении, и никогда не сидит на месте.

Глупотушка -  милое, пушистое существо, которое постоянно совершает глупые поступки, но при этом очаровывает всех своей непосредственностью.

Звончуга -  веселая и звонкая собака, которая постоянно лает и радует своим пением.


Забираю себе в лексикон)
Давно не было постов тут. У меня совсем не выходит что-то выкладывать на более-менее регулярной основе. Да и телеграм-каналов сейчас очень много, так что думается иногда: а что нового я могу добавить к тому, что уже есть? 😨 Остаётся постить когда получается и как получается, в надежде на то, что кто-то из вас зачем-то будет это читать)

Сегодня вот поделюсь некоторыми новостями из своей жизни. На этой неделе я вышел в Яндекс ведущим разработчиком в команду алайнмента YandexGPT. Она называется очень поэтично: "группа поиска смысла". Мне нравится. ❤️

А весь август я не работал. Фактически, это был просто отпуск за свой счёт, так как с предыдущего места работы уволился 31 июля, а на новое место вышел 4 сентября. Ужасно давно не было возможности просто взять и отдохнуть целый месяц. Ух, здорово провёл это время! 👍

Ещё из интересного: так получается, что почти каждый год в августе у меня появляется какое-нибудь новое хобби, или даже не одно. Бывает, через несколько месяцев оно надоедает и отваливается, но иногда и приживается. Например, в прошлом году в августе начал заниматься йогой, а в этом - записался на курсы актёрского мастерства (внезапно). Вроде как помогает управлять эмоциями и раскрепощает. 💃 Посмотрим)

А у вас что нового?
Please open Telegram to view this post
VIEW IN TELEGRAM
Репощу с разрешения организаторов. Я раньше работал в МТС ИИ в одной команде со всеми троими спикерами, они очень классные) Наверняка будет много полезного и интересного. Ребята говорят, что даже вроде бы остались ещё офлайн-места. Но если вы не в Москве, присоединяйтесь хотя бы онлайн!
Напоминаем, что меньше чем через неделю состоится наш первый AI Sync, а мы готовы поделиться подробностями про темы предстоящих докладов. Определиться было не просто, на ACL много всего интересного, но мы справились!

🌂 Для начала Гриша Аршинов расскажет про новые веяния в текстовой классификации. Да, на дворе 2024й год, модели с 3-4b параметров считаются маленькими, но такая классическая задача как текстовая классификация остается актуальной и в индустрии, и в ресерче.

🌂 Маша Никифорова поделится инсайтами про прогресс в понимании LLM - что нашли в скрытых представлениях трансформеров, английский след в размышлениях LLama, какие данные подавать модели и в каком порядке, чтобы получить SoTA решение.

🌂 В заключении Леня Саночкин расскажет о том, как коварные модели пытаются ввести в заблуждение наивных пользователей и как с этим бороться. Обсудим прогресс в области исследований галлюцинаций больших языковых моделей.

Напоминаем, если хотите послушать нас в онлайне, то подписывайтесь на канал и ожидайте ссылку на трансляцию :) Информация для тех, кто хочет прийти к нам в офис:

Дата: 19 сентября
Время: 19:00
Место: Офис MTS AI, м. Курская
Обязательная регистрация на оффлайн вот тут

До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
Свежий пост от Anthropic про интересную технику контекстуализации чанков для улучшения RAG.

Напомню на всякий случай, RAG (retrieval augmented generation) - это когда мы помогаем нашей LLM лучше ответить на пользовательский запрос, "обогащая" его релевантной информацией из базы знаний. Примерно так: берём запрос, находим семантически близкие к нему фрагменты из базы знаний, просим LLM использовать их в ответе на запрос. Но это совсем на пальцах, а чуть подробнее про RAG можно почитать, например, тут.

В теории идея RAG звучит красиво, но на практике куски информации, вырванные из контекста, могут не только не помогать, но и мешать модели отвечать на вопросы. Вот разработчики из Anthropic и предлагают добавить в каждый чанк немного контекста:

Выручка компании выросла на 3% относительно предыдущего квартала.
->
Выдержка из отчета за второй квартал 2023 года компании "Иванов и партнёры". Выручка в предыдущем квартале составила 314 млн долларов. Выручка компании выросла на 3% относительно предыдущего квартала.


Интуитивно понятная идея, но... А как это сделать? Не вручную же? 🥰 Разумеется, нет. Антропики использовали для написания контекстов свою же недорогую модель Claude 3 Haiku с примерно таким промптом (мой вольный перевод):

<документ>
{{подставляем сюда ПОЛНЫЙ текст документа}}
</документ>
Вот фрагмент, для которого нам нужен краткий контекст из документа:
<фрагмент>
{{подставляем сюда текст фрагмента}}
</фрагмент>
Дай краткий контекст для этого фрагмента на основе всего документа, так чтобы потом можно было легко понять, про что этот фрагмент и как он соотносится с документом в целом. В ответе напиши только краткий контекст, без повторения фрагмента.


[Я, кстати, немного потестировал ровно этот промпт с локальными Mistral-Small-Instruct-2409 и Gemma2-9b на русскоязычных текстах, и вроде бы даже работает]

Вы скажете, что слишком дорого каждый раз заставлять модель читать весь документ - ведь у нас для рерайтинга каждого чанка полный текст документа подставляется в промпт. Но у Антропиков есть кеширование документов, поэтому им не дорого. 😎

Как можно было ожидать - не просто же так Антропики решили поведать миру о contextual retrieval - метод дал ощутимый прирост к качеству поиска релевантных фрагментов для ответа на запросы. В каком-то смысле, мы просто обмениваем большое количество компьюта (в данном случае - переписывание чанков моделью, пусть и относительно лёгкой) на улучшение данных и, как следствие, рост метрик. Если база знаний не слишком часто обновляется, то наверное, игра стоит свеч. Но, как вы понимаете, от кейса к кейсу эффективность может разниться, надо брать и экспериментировать. Тем более, что в блогпосте особо не пишут о влиянии этой техники на конечную задачу - собственно ответы на пользовательские запросы. 💃

P.S. Ещё авторы говорят, что техника хорошо сочетается с гибридным индексом (эмбеддинги + BM25), реранкингом и подачей аж топ-20 чанков в финальный промпт.
Please open Telegram to view this post
VIEW IN TELEGRAM