Ранее я делал серию постов про битовые операторы.
Вот вам ещё один наглядный пример как это используется в Python в модуле re.
Чтобы указать флаг для компилятора нам надо указать его после передаваемой строки. Например, добавляем флаг для игнорирования переноса строки.
pattern = re.compile(r"(\w+)+")
words = pattern.search(text, re.DOTALL)
А как указать несколько флагов? Ведь явно будут ситуации когда нам потребуется больше одного. Кто читал посты по битовые операторы уже понял как.
pattern.search(text, re.DOTALL | re.VERBOSE)
А теперь смотрим исходники, что находится в этих атрибутах?
Не удивительно, степени двойки. Почему? Потому что каждое следующее значение это сдвиг единицы влево.
>>> for n in [1, 2, 4, 8, 16, 32, 64, 128, 256]:
>>>
print(bin(n))
0b1
0b10
0b100
0b1000
0b10000
0b100000
0b1000000
0b10000000
0b100000000
Чтобы было понятней, давайте напишем тоже самое но иначе, добавим ведущие нули:
000000001
000000010
000000100
000001000
000010000
000100000
001000000
010000000
100000000
Не понятно что тут происходит? Читай три поста про битовые операторы начиная с этого ➡️https://t.me/pythonotes/45
В общем, это пример применения побитовых операций в самом Python.
Теперь вы знаете Python еще немного лучше)
#tricks#regex#libs
🌟BitDance: авторегрессионная генерация изображений с бинарными токенами.
Генеративные модели делятся на 2 лагеря: диффузионные и авторегрессионные. Вторые концептуально ближе к LLM - генерируют изображение токен за токеном, как текст. Проблема в том, что это очень медленно, а качество проигрывает диффузии.
BitDance - экспериментальная 14B AR-модель, которая пытается решить оба этих вопроса разом.
Этим проектом группа китайских рисёчеров показала, что правильный бинарный токенизатор + diffusion head + параллельный патчинг закрывает большинство претензий.
Они локализовали 3 проблемы дискретных AR-моделей и закрыли каждую отдельным решением.
🟡Плохая реконструкция токенизатора
Вместо VQ-кодбука тут используется бинарный токенизатор на основе квантования с групповым разбиением каналов. Словарь вырастает до 2²⁵⁶ (для сравнения: у Cosmos - 65536), при этом модель держит PSNR 25.29 против 24.81 у непрерывного DC-AE, то есть бинарные токены реконструируют изображение лучше, чем VAE у SANA.
🟡Нестабильный сэмплинг
А как вообще выбирать из словаря в 2²⁵⁶ вариантов? Обучить классификатор на все возможные токены тут не вариант: такой слой не поместится ни в какую память. В качестве решения - прикрутили diffusion head, которая моделирует биты на непрерывном гиперкубе. То есть, модель предсказывает структуру битов через velocity-matching, что и позволяет сэмплить из гигантского пространства состояний.
🟡Скорость
AR генерирует по одному токену за шаг. BitDance за один шаг выдает сразу 64 токена (или 16), при этом модель понимает, как они связаны между собой внутри этого блока. Громко заявленный результат: 30x ускорение относительно next-token AR при сопоставимом качестве. об этом в конце
🟡Тесты
На мелкой версии ImageNet BitDance-H достигает FID 1.24 (лучший результат среди AR-моделей, наравне с xAR-H).
На DPG-Bench (text-to-image) полноценная BitDance набирает 88.28 - это выше FLUX.1-Dev, SD3, Janus-Pro, но уступает Seedream 3.0 и Qwen-Image.
В релизе 2 версии 14B модели, с предикшеном на 16 и 64 токена и макс. разрешением 1Мpx.
Остается вопрос: насколько бинарный токенизатор + diffusion head добавляет латентности на каждом шаге, даже если самих шагов стало меньше из-за патчинга.
30x по скорости - это сравнение не с диффузионными моделями, которые уже умеют генерировать за 4–8 шагов.
14B - это не про "взял и запустил". Есть конечно версии на ImageNet с разрешением 256х256 для воспроизведения эксперимента, но не за этим мы сюда пришли.
📌Лицензирование: Apache 2.0 License.
🟡Страница проекта
🟡Arxiv
🟡Модель
🟡Demo
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#AR#T2I#BitDance
🌟X-Omni от Tencent: авторегрессионная text-to-image модель с RL.
X-Omni - методика обучения T2I моделей, которая наглядно доказывает, что RL может вдохнуть новую жизнь в авторегрессионный подход и вывести такие модели на SOTA-уровень.
X-Omni построена на гибридной, но при этом унифицированной архитектуре. Схематично она выглядит так:
Семантический токенизатор изображений SigLIP-VQ с фиксированным словарем на 16 384 токена кодирует картинку в дискретные токены. Эти визуальные токены вместе с текстовыми подаются в единую авторегрессионную модель на базе Qwen2.5-7B. Наконец, в финальном рендеринге используется диффузионный декодер на основе FLUX.1-dev.
🟡Уникальность метода - в смеси RL по GRPO и комплексной reward-системе.
Вместо одного критерия, модель оценивается сразу по нескольким направлениям. За эстетику и соответствие предпочтениям человека отвечает HPSv2 и модель Unified Reward. За семантическую связь между промптом и изображением — VLM-модель Qwen2.5-VL-32B. А за самое сложное, отрисовку текста внутри картинки, отвечает отдельная награда на основе OCR-систем GOT-OCR2.0 и PaddleOCR.
Тестовую модель X-Omni обучали на смеси из 200 млн. изображений, которые после токенизации превратились в 600 млрд мультимодальных токенов, а на этапе SFT использовал ещё 1.5 млрд. токенов.
Для RL-фазы был отобран микс из 180 тыс. промптов, состоящий как из творческие запросы, так и задач на рендеринг текста.
🟡И это дало свои плоды, особенно в отрисовке текста, где авторегрессионные модели исторически пасовали.
На бенче OneIG-Bench X-Omni показала результат 0.901 для английского языка, обойдя GPT-4o (0.857). А на собственном LongText-Bench, специально созданном для оценки рендеринга длинных надписей, модель буквально разгромила всех в китайском языке, набрав 0.814 балла против 0.619 у GPT-4o.
В задачах общей генерации по тексту X-Omni также на высоте. На DPG-Bench модель достигла SOTA-результата 87.65, опередив GPT-4o (86.23) и Show-o2 (86.14). На GenEval результат составил 0.83, чуть-чуть не дотянув до модели Mogao (0.89).
Даже в задачах на понимание изображений X-Omni показывает себя достойно: на OCRBench ее результат (704) превосходит другие унифицированные модели, например Emu3 (687).
🟡Интересные подробности.
Во-первых, X-Omni не нуждается в CFG. В отличие от Emu3 или Janus-Pro, качество которых резко падает при отключении CFG, X-Omni работает стабильно.
Во-вторых, что, пожалуй, самое важное, RL превосходит даже SFT с последующим сэмплингом best-of-N.
Этот вывод идет вразрез с устоявшимся мнением в области языкового моделирования и доказывает, что для изображений холистическая оптимизация через RL дает существенный прирост качества.
📌Лицензирование: Apache 2.0 License.
🟡Страница проекта
🟡Набор моделей
🟡Arxiv
🟡Demo
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#T2I#RL#XOmni#Tencent