bugs ans letters – Telegram
bugs ans letters
18 subscribers
34 photos
3 videos
3 files
135 links
Мой канал для себя про NLP. В основном – помойка из ссылок.
Download Telegram
#database #architecture Картинка шибко простенькая, но пусть будет
Forwarded from Градиентное погружение (Максим Герасимов)
🔥TensorRT-LLM

👉Ваш любимый нейронный ускоритель получил расширение!

TensorRT - движок, который применяет оптимизации для эффективного использования NVIDIA-GPU в Deep Learning.

Что интересного?

💡Интеграция с NVIDIA Triton Inference Server
💡Поддержка Multiple GPU
💡Python API (очень напоминает API HF)
💡Есть поддержка 17 моделей (с примерами): Blib2, LLaMa 1/2, GPT-like, StarCoder, Bert, etc
💡Поддержка квантизации: FP32, FP16, BF16, FP8, INT8, INT4
💡Beam-search & Greedy-search
... и многое другое!

Multi-head Attention (MHA), Multi-query Attention (MQA), Group-query Attention (GQA), In-flight Batching, Paged KV Cache for the Attention, Tensor Parallelism, Pipeline Parallelism, INT4/INT8 Weight-Only Quantization (W4A16 & W8A16), SmoothQuant, GPTQ, AWQ, RoPE

@gradientdip

Конечно, сейчас проект сыроват, но все впереди

Github
Performance (не нашел сравнения с обычным TensorRT)
Документация
🔥1
Forwarded from Плотва
взрыв градиента
за авторством stepan
(❣️)
Уверен, что многих интересует как вот там реализуются методы распределенного трейна, может кто-то хотел бы сам реализовать (а это очень полезно).
Ребята из HF 🤗 начали проект по учебной реализации таких методов (dataparallel, tensorparallel, pipelineparallel, contextparallel) :
https://github.com/huggingface/picotron
https://github.com/huggingface/picotron_tutorial

Вместе с проектом идут лекции на ютубе.

Это как проект nanoGPT по учебной реализации гптшки 2, чтобы разобраться, но он прям уже круто разросся и народ там уже наоптимизировал всякого, мб и тут крутое что-то будет
kurs_algebry.pdf
3.3 MB
#вышмат Очень неплохой базовый учебник алгебры нашёлся в ответ на запрос человека "а как поботать математику" без конкретизации, что именно ему не хватает.
Ещё в ту же степь Brilliant и Elevate. Последний, конечно, лучше сделан в части "английский для сдачи GRE", но математика тоже сойдёт
Forwarded from Voice stuff
Test Driven LLM Development

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

Мой опыт такой:

Я как-то искал ошибки в том, что ЛЛМка написала и нашёл что чаще всего проблема в недопонимании задачи. Если просить модель писать docstring, для каждого класса и функции и сверять что она там задумала, то получается отловить много ошибок.

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

Какие у вас есть трюки при разработке в 2025? Используете курсор? Пишете тесты? Пишете что “You are an experienced Python Engineer who makes no mistakes in code” в промпте? Рассказывайте ваши секреты.

https://blog.yfzhou.fyi/posts/tdd-llm/ - для вдохновения.
Forwarded from Ivan Kotov
Если тебе выключить создание .DS_Store то это можно настройками поправить
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
В рамках консолидации знаний про трансформеры – длинное, но отличное видео от Карпатого про построение и обучение трансформера с нуля (детали архитектуры прилагаются, умение читать документацию по torch.nn предполагается, но там действительно не сложно). К нему прилагается репа с кодом. Для ленивых – архитектура в двух видео.
#transformers #school #ml #llm
Forwarded from Igor Prokofyev
внезапно понадобилось однократно но массово конвертнуть фотки из heic в jpg, решил что скрипт это проще и быстрее чем качать мутный софт, вот код кому тоже вдруг пригодится

from pathlib import Path
from PIL import Image
import pillow_heif

input_folder = Path("")
output_folder = Path("")

output_folder.mkdir(parents=True, exist_ok=True)

for file in input_folder.iterdir():
if file.suffix.lower() == ".heic":
heif_image = pillow_heif.open_heif(file)
img = Image.frombytes(heif_image.mode, heif_image.size, heif_image.data)
output_path = output_folder / file.with_suffix(".jpg").name
img.save(output_path, "JPEG")
print(f"Converted: {file.name} → {output_path}")

print(" Conversion completed!")
Kravchenko ML System Design.epub
14.3 MB
#ml #systemdesign В прошлой редакции эта книга собрала неплохие отзывы, повод сравнить, что изменилось за два года.
Forwarded from Модель для сборки
👾 Я одним из последних прочитал книгу @partially_unsupervised и @cryptovalerii по ML System Design и решил прикрепить все свои заметки, которые я за это время накопил. Их дохера, поэтому не уверен что это сильно надо, но я уже несколько раз натыкался на просьбы рассказать чё там да как. Кстати, после каждой главы есть её summary, что прикольно.

Постарался сделать подробный обзор первых 8ми глав (всего 16). Когда-нибудь я допишу обзор, особенно учитывая что мне дичайше зашла 9я глава.
https://telegra.ph/Zametochki-po-knige-ML-System-Design--ch1-02-17

Имейте в виду, что автор — не повар, и готовить не умеет.


💅🏼 Спаразитирую ещё больше и замучу подробный список промптов для claude по книжке, если наберёте 3000 реакций 💅🏼
Forwarded from k8s (in)security (Дмитрий Евдокимов)
Если вам не хватает хардкора в теме безопасности контейнеров и Kubernetes, то специально для вас у нас в блоге вышла статья "Ломаем ваши видеокарты: распаковка эксплойта для CVE-2024-0132 под NVIDIA Container Toolkit"!

Тема острая, горячая приправленная ML-кластерами, драйверами видеокарт, атакой TOCTOU, проблемой разыменования symlinks ;)

При этом тема очень актуальная ввиду все большего количества систем, работающих с видеокартами.

P.S. Раньше всех о таких материал можно узнать на нашем официальном канале.
Внезапное #сисадминское. И да, #macos.
Сменить имя компьютера в Preferences -> General -> Sharing или через hostname --set работает не очень последовательно. Хочется один и тот же хостнейм видеть сразу в приглашении командной строки, в том, как компьютер объявляет себя через mDNS в сети, ну и в целом не ощущать доменную шизофрению.
В статье описана старая давняя утилита scutil, которая позволяет выставлять параметры (HostName|ComputerName|LocalHostName) для системы. Однако найти/вспомнить этот подход потребовало более одной минуты, посему запись остаётся в заметках здесь.
Forwarded from AI для Всех (Kirill)
Как обучить диффузионную модель с нуля за $1890?


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

Поскольку стоимость обучения text-to-image трансформера растет с количеством участков в каждом изображении, исследователи из Sony AI предложили случайным образом маскировать до 75% участков изображения во время обучения.

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

В исследование также включили последние
улучшения в архитектуре трансформеров, такие как использование слоев с mixture of experts (MoE),чтобы улучшить производительность и убедиться в важности использования синтетических изображений для уменьшения затрат на обучение.

Какие результаты?

Используя только 37 млн изображений (22 млн реальных + 15 млн синтетических), была обучена модель типа "sparse transformer" с 1,16 млрд параметров.

На обучение было потрачено всего 1890$ !

Была достигнута производительность 12,7 FID при zero shot learning на наборе данных COCO.

Примечательно, что модель достигает конкурентоспособного FID и высококачественных генераций, при этом требуя в 118 раз меньших затрат, чем стабильные диффузионные модели, и в 14 раз меньших затрат, чем текущий современный подход, который стоит 28400$


🔍 Технические детали:
• Архитектура: sparse DiT-XL/2 трансформер
• Вычисления: 8×H100 GPU на 2,6 дня тренировки
• VAE: использование как SDXL-VAE (4 канала), так и Ostris-VAE (16 каналов)
• Патч-миксер перед трансформером + маскирование 75% патчей
• Обучение: 280K шагов на 256×256, затем 55K шагов на 512×512
• Размер батча: 2048, с применением центрального кропа

📊 Доступные предобученные модели:
1. MicroDiT_XL_2 на 22 млн реальных изображениях (FID 12.72)
2. MicroDiT_XL_2 на 37 млн изображениях (FID 12.66) с SDXL-VAE
3. MicroDiT_XL_2 на 37 млн изображениях (FID 13.04) с Ostris-VAE
4. MicroDiT_XL_2 на 490 млн синтетических изображениях (FID 13.26)

💻 Репозиторий содержит полный код, включая обработку датасетов и тренировочные конфиги для каждого этапа

🔗 Статья

4️⃣ GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Secrets
Итак, выпустили полноценную o3 и o4-mini

o3 выбивает даже лучшие метрики, чем были, когда ее анонсили. На AIME 2025 это рекордные 98.4%. При этом o4-mini еще круче: ее результат 99.5. А на Humanity Last Exam результаты сопоставимы с Deep Research. Кодинг тоже не отстает.

Обе модели мультимодальные, и не просто мультимодальные, а с ризонингом поверх изображений. Плюс модели специально натаскивали на использование инструментов (поиск, интерпретатор и все такое), так что агентные способности на высоте.

При этом o3 даже немного дешевле o1. Цены: инпут $10.00 / 1M и аутпут $40.00 / 1M (для o1 это 15 и 60). o4-mini: $1.1 / 1M и $4.4 / 1M.

Еще приятно, что масштабирование на ризонинге теперь дешевле. То есть с ростом метрик за счет увеличения ризонинга цена теперь растет медленнее, чем это было с o1.

Обе модели будут доступны Plus, Pro и Team, их уже раскатывают. Позже o4-mini будет также доступна фри юзерам.

https://openai.com/index/introducing-o3-and-o4-mini/
👍1
Forwarded from AbstractDL
ignore-topk: новая регуляризация для борьбы с деградацией LLM во время файнтюнинга (by DeepMind)

При дообучении языковые модели частенько портятся. Рисёрчеры из DeepMind показали, что проблема связана с тем, что LLM, пытаясь запомнить новый факт, начинает использовать лёгкие shortcut-ы вместо аккуратного внедрения новых знаний в веса. Она просто «раскладывает» новую информацию по уже знакомым ей понятиям (казалось бы это хорошо, но нет). Такое явление они назвали "праймингом" (aka разложение числа на простые множители), и из-за него LLM начинает путаться в фактах, выдавая новую информацию где не просили.

Авторы этой статьи предлагают потенциальное решение — регуляризацию ignore-topk. Идея до гениальности простая:
- Делаем обычный шаг файнтюнинга и смотрим на обновления весов (Δω).
- Отбираем top-k% самых больших обновлений и… просто удаляем их (умножаем на 0).
- Используем только небольшие изменения весов, которые не содержат шорткатов для быстрой меморизации.

Зачем так странно?
Оказывается, самые большие градиенты как раз и отвечают за «грязное» быстрое запоминание через прайминг. Игнорируя их, мы заставляем модель учиться медленнее и аккуратнее. При этом прайминг уменьшается на 90-95%, а способность запоминать новые факты не страдает.

Но авторы конечно молодцы, сами придумали бенчмарк, сами свой подход измерили, а на другие "learning without forgetting" методы вообще забили. Поэтому не могу сказать, что ignore-topk лучше чем, например, Child-Tuning или EWC, но выглядит прикольно, я его точно попробую 🤷‍♂️

Статья
👍1
Forwarded from FSCP
📚 Вышла самая понятная книга про LLM — вместо того, чтобы сразу объяснять работу Transformers, автор начинает с простых методов, проводит через эволюцию нейронок и заканчивает современными архитектурами.

Это 200 страниц настоящей годноты:

• Сперва — база машинного обучения и математики.
• Эволюция языковых моделей от начала до нынешнего момента.
• Устройство Transformers и LLM.
• Что читать дальше: список лучших ресурсов.
• Каждая глава — теория, иллюстрация + пример рабочего кода на Python, который можно запустить.

Читаем тут, а репо с кодом лежит тут.

@notboring_tech

_______
Источник | #notboring_tech
@F_S_C_P

Узнай судьбу картами Таро:
Anna Taro bot
Давайте поговорим сегодня про историю отрицания во французском языке?

Для начала скажу, что оно состоит из двух частей, классическая его форма — это две частицы, ne и pas, которые окружают глагол. При этом в современном языке ne может не использоваться — обязательной стала частица pas. Например:

Полная фраза: je ne veux pas (я не хочу)

Можно сказать: je veux pas
Нельзя сказать: je ne veux

Что же такое эти ne и pas? Ne — это собственно отрицательная частица, схожая во многих языках мира. А вот pas — это, вообще-то, «шаг».

Как так вышло, что «шаг» начал использоваться в качестве части отрицательной конструкции, а теперь и вообще вытесняет ne? По одной из версий, произошло это так.

Когда-то во французском действительно была только одна отрицательная частица ne, которая ставилась перед глаголом. Но это ne — фонетически слабое, в речи гласный звук может «съедаться», на слух воспринимается не очень четко. Для более внятных формулировок после глагола стала использоваться дополнительная, вторая часть отрицания. Например:

🟣Со словом «шаг»: je ne vais pas — я не пойду («я не сделаю даже шага»)
🟣Со словом mie (miette, «крошка»): je ne mange mie — я не ем («я не съем даже крошки»)

Продолжать можно долго, и остатки этого явления в современном языке тоже прекрасно живут. Частица pas может меняться на другие отрицательные слова, например: personne (никто), rien (ничего), jamais (никогда), plus (больше не), nulle part (нигде, никуда) и так далее.

А дальше стоящая перед глаголом частица ne начинает отмирать за ненадобностью, и обязательной становится отрицание, занимающее пост-глагольную позицию.

Это явление характерно не только для французского, но и для кучи других языков. Называется оно, кстати, цикл Есперсена — в честь лингвиста Отто Есперсена, который его описал.

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

🟣В староанглийском была отрицательная частица ne, стоявшая перед глаголом (первая стадия цикла)
🟣Для усиления стали использовать слово nought («ничего»), стоявшее после глагола, которое превратилось в современное not (вторая стадия цикла)
🟣Сегодня not (в форме do not) — единственная часть отрицания в английской фразе, которая опять переехала на позицию перед глаголом (третья стадия цикла)

Такая история!

А про отрицания в других языках можно почитать здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM