Senior Software Vlogger
23.2K subscribers
513 photos
29 videos
2 files
1.02K links
Программирование и IT

Все ссылки и реклама https://xn--r1a.website/seniorsoftwarevlogger/3

Для РКН: 5035224480
Download Telegram
Мы перестанем делиться кодом?

Беседовали тут с техлидами в сообществе https://teamleadtalks.com/munity в воскресение. Делимся своими вайбкодами, я о своем рассказал, Егор - про свою прилку на макос, чтобы клаву и мышь перепаривать с рабочего мака на домашний, другие участники — своим опытом. Тут один из участников говорит:

— Так может и выложим куда-нибудь на гитхаб?

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

Короче если ИИ убьет профессию, то оно убьет и часть вот такого опенсорса.

Т.е. оно убивает данные на которых само и обучается 😂 Что если эквилибриум наступит быстрее? Мы перестанем коммитить, данные перестанут дополняться, дальнейшее обучение застопорится, мы спасем профессию!

Посмеялись конечно (сквозь слезы). Но если среди вас есть тех-лидеры, вы записывайтесь, приходите. У нас интересно.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5013👀6👌3👍2🤝1
Для тех, кто хочет закидывать не только коммиты в гит, но и мячи в кольцо1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣

K2 Cloud развернули айтишный стритбольный спот на Дизайн заводе. Играть можно 24/7, работает шеринг мячей, а еще проводят мастер-классы по баскету и турниры с ИТ-компаниями — все бесплатно.

Есть чат-бот со всей инфой, в нем же можно выиграть баскет-мерч и забрать приятные промокоды.

Залетайте в бот, даже если не в Москве — подарки отправят в любой город 🏀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣38👍15🔥114🤯3👾2😢1
ЛЛМ вернули мне радость программирования при катастрофическом отсутствии времени. Я думаю вы по сторям уже заметили.

Конечно в код можно совсем не смотреть, если важнее продукт, но мне 1) интересно 2) все ещё эффективнее посматривать в код и даже что-то править, чем совсем туда не лезть.

Зато итерации короче. Раньше надо было целый день потратить чтобы получить фикс допамина, потом времени тратить целый день на код у меня не осталось и я перестал. Теперь всю основную работу делает ллм. Даже когда я занят. Я заглядываю когда есть минутка.

Программирование теперь буквально приносит только радость!

Я же собрал игровой комп, но вместо этого программирую с ллм.

Вообще интересно, что я мог бы начать лезть в опенсорс и чинить баги в каком-нибудь кубере, а я делаю 2 личных проекта: один на Ардуино, второй под макос.
2🔥85👍236👏2😁2💯2🆒1
Новый AI-gile Manifesto
2😁102💯24👍75
Как принципы влияют на культуру компании

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

Тему инженерных принципов мы с Евгением уже затрагивали в одном из выпусков подкаста Team Lead Talks. Мы решили ее раскрыть на примере компаний AWS и Flo в отдельном выпуске.

https://youtu.be/iuuWsFqoZJg
👍2310🔥4
Как обычно в последнее воскресение месяца — стрим

https://boosty.to/seniorsoftwarevlogger/streams/video_stream?share=post_link
https://youtube.com/live/c3RjQ65P8ao?feature=share
🤣2😢1
Собеседование — это навык. Чаще всего разрабы спотыкаются на базовых вопросах и задачках, которые давно не использовали в работе. Решение простое: заранее повторить типовые вопросы и несколько раз пройтись по задачам в условиях близких к интервью.

Типовые вопросы от интервьюера:
— «Расскажите про уровни изоляции и чем repeatable read отличается от read committed».
— «Как реализована конкурентность: где тут блокировки и почему».
— «Напишите функцию за 10–15 минут, без использования IDE».

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

Теперь к делу. Есть российский сервис для подготовки к собеседованию — Солвит. Его создали разработчики, которым надоело держать сотни открытых вкладок из разряда "топ вопросов с собеседований":
лайв-кодинг прямо в браузере (Python, C++, Java, C#, Golang и даже SQL)
база вопросов с ответами (Computer Science, Docker, Git, Базы данных и др.)
фильтры по Бигтех компаниям
аналитика прогресса: видно, что подтянуть.

Недавно они добавили 50 свежих задач с реальных собеседований Яндекса, Ozon, Т-Банка и Сбера. Попробовать можно прям сейчас: попробуйте решить пару задач сегодня вечером. Заодно проверите, остался ли у вас навык решать задачки без ИИ и IDE
👉 Открыть задачки

Также ребята подогнали мне промокод для полного доступ ко всем кодинг-задачам и 1000+ вопросов с собесов — по промокоду DIMASENIOR.
Активировать можно тут

Оффер никто не обещает, но как способ навести порядок в подготовке и снизить уровень стресса подойдет идеально.

Рекламодатель
🤣28👍5🆒4😢32🤯2🔥1
Книга на 400 страниц от Distinguished Engineer Google search and Ai о том как делать агентские системы.

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

https://docs.google.com/document/d/1rsaK53T3Lg5KoGwvf8ukOUvbELRtH-V0LnOIFDxBryE/mobilebasic#heading=h.pxcur8v2qagu
3👍53🔥26124🙏3
Программируя с ИИ я понял, что чувствует нетехнический заказчик

Я делаю моторизованную каретку для таймлапсов. Т.е. контроллер управляет мотором, который таскает камеру по рельсе с заданной скоростью.

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

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

ИИ же просто сохранял программы в LocalStorage браузера. Внешне все работало, но по факту не работало ничего. Интерфейс работы с контроллером не работал в принципе. Сохранять программы в память было нельзя. Загрузка из памяти в браузер вообще была не реализована.

В итоге я нанял технического кофаундера (себя). Который разобрался в коде и дал команде (ИИ) пиздов. Теперь все работает.
3😁200👍21👏12🔥32😱1
^ для тех, кто любит ковыряться в коде: Motorillo! На 98% сгенерировано в Qoder (оно и видно). Я в си не бум бум, поэтому помогал архитектурно и дебагом. Платки уже едут, 3д модельки тоже отдебажены. Скоро соберу воедино.
👍118👾3🔥2👌1
Forwarded from Team Lead Talks Подкаст (Дима Рожков)
Корпо стресс культуры

Один знакомый менеджер недоумевает: зачем некоторые фанги устраивают своим инженерам ненужные стресс? Зачем нанимать топ 1% и потом устраивать потогонку? Ведь есть другие фанги где этого не делают.

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

Но так же как это может являться и отстройкой от рынка.

Вы не задумывались почему некоторые люди постоянно влезают в совершенно отбитые отношения? А в спокойных отношениях им скучно.

Так же и здесь. Да, нормального человека опыт такой работы выжгет до тла, но человеку с другой психикой будет по кайфу. Они будут плавать в этой культуре как рыба в воде. Причем они точно так же могут страдать на показ как все плохо, но работать в компании без стресса они не смогут. Там им будет очень скучно. Мало динамики. Много планов. Все планы реалистичные. Менеджер даже сука не орёт.

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

Поэтому я всегда говорю: вы должны на 100% отдавать себе отчёт куда вы идете. Притвориться не получится. Чревато выгоранием до костей.
152🤣15💯8🫡6🔥2👍1
Прекрасно понимаю этих людей. Компенсация +5%, ответственность х2, поддержка 0.

Особенно когда тебе _предлагают_, а не ты сам рвешься и _просишь_

В кипяток прыгать люди должны по собственному желанию. Предлагать прыгать глупо.

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

Иначе сохранить роль при смене работы скорее всего не получится, а предыдущую квалификацию подрастеряешь.
👍115💯7310🤝3
Похоже наши работы программистами засекурены.

КлозетИИ планирует запустить соц сеточку для ИИ сгенерированных видео, а вовсе не AGI 🤡

https://www.wired.com/story/openai-launches-sora-2-tiktok-like-app/
Please open Telegram to view this post
VIEW IN TELEGRAM
😁33🤯75🔥1💯1
Локальные LLM: Введение. Что происходит, когда вы запускаете LLM?

Нашел офигел от плотности информации перевел и адаптировал для вас. Ссылка на источник в конце.

Работа модели по другому называется inference (вывод) или использование весов модели. Вывод — по сути предсказание следующего токена на основе вашего ввода и всех токенов сгенерированных на предыдущих шагах. Все это образует последовательность.

Токены — это не слова. Токены это кусочки обозначающие текст, который видит модель. В модели они представлены целыми числами или ID токенов. Токенизация — разбиение текста на токены. Распространенные алгоритмы: BPE (byte pair encoding), SentencePiece. Конкретные токены отличаются в разных моделях. Вот иллюстративный пример: “hello” \- может быть 1-3 токена, “internationalization” 5-8 токенов.

Контекстное окно \- максимальное количество токенов, которые может увидеть модель за раз. Чем больше context тем больше VRAM для KV кеша потребуется и тем медленнее будет декодировка.

В процессе вывода модель предсказывает следующий токен перемножая свои веса. Веса модели \- это миллиарды выученных параметров. Параметры модели \- миллиарды чисел или весов, которые модель усваивает в процессе обучения. Эти веса кодируют все что модель знает: шаблоны, язык, факты, “мышление”. Когда вы используете модель, она использует эти параметры, чтобы предугадать следующий наиболее вероятный токен. Один токен за раз. Шаг за шагом.

Т.е. модель не дает ответ, а выдает наиболее вероятные кусочки текста составляя их в цепочки пока не решит, что выдача завершена сгенерировав спец стоп токен <|endoftext|>

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

Но модель это чуть больше чем просто файл с весами:
* Архитектура нейросети: трансформер (слои, головы внимания heads, RoPE, MQA/GQA об этом ниже)
* Веса: миллиарды изученных чисел. Параметров, не токенов, но вычисленных из токенов
* Токенизатор: для кодирования текста в токены. BPE/SentencePiece
* Конфиг: метаданные, спец токены, лицензия и тд
* Иногда шаблоны чатов необходимые для chat/instruct моделей. Иначе эти модели выдают мусор

Модели отличаются по количеству параметров

* 7B означает 7 миллиардов чисел
* Чем модель больше тем она мощнее, но тем больше VRAM и вычислений требуется для ее работы
* Модели вычисляют вероятность следующего токена (гоняя softmax по своему словарю vocab) тут у модели будет несколько токенов на выбор
* Далее она выбирает один или с наиболее высокой вероятностью (greedy) или начинает креативить в зависимости от temperature, top-p и других настроек.
* Потом она добавляет этот один токен к тому что у нее уже есть и повторяет заново как я и описал выше.
* Все токены из текущей сессии находятся в KV кеше

Как модель выбирает токен (sampling):

* greedy \- выбирает самый вероятный как робот
* temperature: немного расслабляет вероятности и позволяет модели креативить
* top-k: выбирает из top k
* top-p: выбирает из самой маленькой группы с вероятностями ≥p
* Чтобы получить детерминированную выдачу \- устанавливаем seed и отключаем sampling

Больше там никакой магии нет.

Большинство современных моделей основаны на архитектуре Transformer. Они специально задизайнены для последовательных данных таких как наш язык. Трансформеры могут смотреть назад на предыдущие токены чтобы решить какие из них наиболее важны для следующего предсказания. Трансформер прогоняют вывод через множество слоев уточняя вывод, используют специальные механизмы “внимания” чтобы сфокусировать предсказание на важных частях ввода и контекста. Каждый новый токен проходит через весь этот пирог.
55917🔥8👍7🤯2🤓2🆒2
Каждый слой состоит из:
* Self-attention или внимание: определяет какие из токенов важны для текущего предсказания
* MLPs (multi layer perceptrons): чтобы добавить нелинейность и перчинку
* Стабилизация residual \+ norms чтобы это не развалилось и работало с глубокими сетями
* Позиционное кодирование (RoPE) чтобы модель знала где токен находится в последовательности и не путала кота и котастрофу 🙂

Накладывая десятки и сотни таких слоев трансформер пытается “понять” ваш запрос, контекст и историю разговора. Чем больше слоев в голов внимания у модели тем умнее модель.

Чтобы работать с моделью ее надо вгрузить в VRAM. Количество должно позволить вгрузить 1\. Веса 2\. KV кеш. Примерные формулы: FP16 \- 2 байта на параметр (7B \- 14Gb), 4 бита \- уже 3.5Gb. Учитывайте еще 10-30% на оверхед. KV кеш стоит около 0.5 мег на токен и зависит от модели. Т.е. 4к токенов \- это еще 2 гига памяти. Некоторые рантаймы позволяют квантизировать и кеш в том числе позволяя экономить большое количество памяти.

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

И чтобы она работала быстро пригодится Memory bandwidth \+ GPU FLOPs. Именно поэтому некоторые старые видюхи у которых шина пошире будут работать быстрее чем новые модели с более узкой шиной. Так NVIDIA RTX 2080 Ti (2018, 352-битная шина) имеет \~616 ГБ/с bandwidth и часто обходит RTX 4060/4070 (2023, 128/192-битные шины, \~288–504 ГБ/с) в LLM-задачах, несмотря на меньшее количество CUDA-ядер.

Вычисления можно переложить на CPU, но это существенно ощутимо болезненно медленнее.

Квантизация модели дает колоссальную экономию памяти зачастую при незначительной потере качества. 4-бит (NF4/GPTQ/AWQ) квантизация может быть оптимальной для потребительских GPU. Но нужно учитывать, что сложные мат задачи деградируют первыми: математика, логика и кодинг.

Рантаймы, где гонять
* pytorch \+ safetensors: гибко, стандартизовано, GPU/TPU/CPU
* GGUF (llama.cpp): CPU/GPU/portable лучший выбор для квантизации и для устройств “на крае”
* ONNX, TensorRT-LLM, MLC: для спец оборудования
* Избегайте bin по причинам безопасности

Компромиссы повсюду. Балансируйте компромиссы под свою задачу и бюджет.

Как раздавать
* vLLM для параллельных запросов
* llama.cpp server с OpenAI совместимым API
* EXLlama v2/v2 Tabby API с OpenAI совместимым API
* Просто как локальный скрипт через CLI

Локальная модель не значит Offline, а значит что работает на твоем железе. Твое железо может быть под столом, а может быть и в облаке.

Коротко о Fine Tuning
* Большинство задач можно решить через правильный промт \+ RAG
* Для файнтюнина необходимо раздобыть данные
* Делаем adapter layers на LoRA/ QLoRA на своем домашнем железе если сильно хочется

Наиболее частые проблемы
* OOM кончилась память. Квантизуем модель или сокращаем контекст
* Плохая выдача. Проверь chat template, temperature
* Медленно работает? Неправильные драйверы, нет FlashAttention, проверь свое железо CUDA/ROCm/Metal, влазит ли оно в память
* Небезопасно? Не используй bin модели от рандомов из интернета

Зачем все это?
Запуская модель на своем железе вы получаете все управление в свои руки: механизм выбора токена sampling, chat templates, декодирование, системные промпты, квантизацию, контекст. Больше не платите за каждый токен. Только за железо и электричество. Приватность. Отсутствие Network latency.

Источник: https://x.com/TheAhmadOsman/status/1974730678513041490
367🔥18👍156👌4
Представьте, что у вас есть готовое приложение, в нем есть поиск. Сколько времени у вас займет добавить вот такую фичу с условием, что ее еще нет:

Add keyboard navigation through search results. When searching and search results show up and I press down arrow button, the first search result should become selected, pressing up and down - navigate through results, pressing enter when a result is selected should open this document