Что-то вы гоните насчет "привычного вида формата 755 и 644". Я вот вообще не понял что это!😳
Действительно, что означают цифры которые мы получили в прошлом посте?
Это кодировка, заключающая в себе режимы доступа к файлу.
Подробней можно почитать в статье про chmod.
Там можно увидеть альтернативное обозначение того же самого с помощью символов r w x, что значит чтение, запись, исполнение.
Чтобы преобразовать восьмеричное число в такое обозначение в Python есть готовая функция
>>> stat.filemode(0o755)
'?rwxr-xr-x'
Мы видим 3 группы по 3 символа, дающие 3 типа доступа для 3 типов юзеров.
А что за знак вопроса в начале?
Давайте передадим в эту функцию необрезанное значение от os.stat
>>> stat.filemode(os.stat(path).st_mode)
'drwxr-xr-x'
Это данные, которые мы безжалостно обрезали в прошлый раз😼
Первый символ обозначает тип объекта. Это может быть файл (-), директория (d) или симлинк (l).
Вот простая схема данной кодировки
[1][3][3][3]
│ │ │ │
│ │ │ └──> Others Permissions
│ │ └─────> Group Permissions
│ └────────> Owner Permissions
└───────────> File Type
(разверните экран если вы с телефона)
Если вы попробуете получить пермишены для симлинка то получите пермишены для файла
>>> path = '.venv/bin/python3'
>>> stat.filemode(os.stat(path).st_mode)
'-rwxr-xr-x'
Чтобы получить свойства именно симлинка, нужно это явно указать
>>> stat.filemode(os.stat(path, follow_symlinks=False).st_mode)
'lrwxrwxrwx'
#tricks#basic
🌟 FlexTok: адаптивная 1D-токенизация изображений от Apple.
FlexTok - метод токенизации изображений, который преобразует 2D-изображения в упорядоченные 1D-последовательности переменной длины.
Его цель - сократить объем данных, необходимых для обучения генеративных моделей, и при этом оставить достаточную информацию для качественной реконструкции и генерации.
В отличие от традиционных подходов, где число токенов фиксировано и зависит только от размера изображения, FlexTok подстраивается под сложность контента: простейшая сцена может кодироваться несколькими токенами, а сложная - десятками и сотнями .
FlexTok, это по сути, пайплайн из 3 компонентов: ViT‑энкодер, квантование регистров и маскирование внимания:
ViT‑энкодер с набором «регистровых» токенов читает латентные представления VAE‑GAN и конденсирует их в 1D-последовательность до 256 регистров .
Затем, с помощью FSQ‑квантования, каждый регистр дискретизируется в код из заранее определенного словаря размером ~64 000.
На этом этапе применяется "nested dropout": во время обучения случайно обрезаются последние токены, чтобы модель научилась упорядочивать информацию от грубых форм к деталям.
Параллельно применяется авторегрессионная маска внимания: каждый токен в цепочке видит только те, что были до него, и не знает о тех, что идут после. Это заставляет модель генерировать изображения шаг за шагом, от первого токена к последнему, и упрощает ей задачу прогнозирования следующих элементов.
Декодер в FlexTok - это модель rectified flow, которая на вход берет укороченные токены и слегка зашумленные латенты VAE и учится предсказывать тот шум, который нужно убрать, чтобы вернуть исходное представление.
Чтобы обучение шло быстрее и давало более точные результаты, добавляют REPA‑Loss: он сравнивает промежуточные признаки с векторами из DINOv2‑L. Благодаря этому даже при очень жесткой компрессии (от 1 до 256 токенов), FlexTok успешно восстанавливает детали изображения.
FlexTok легко встраивается в текстово‑ориентированные модели и может улучшить соответствие изображения описанию, даже если число токенов меняется. К тому же его адаптивная токенизация применима не только к картинкам, но и к аудио или видео.
▶️Набор токенизаторов:
🟢Flextok_d12_d12_in1k - 12\12 слоев энкодер-декодер, датасет IN1K;
🟢Flextok_d18_d18_in1k - 18\18 слоев энкодер-декодер, датасет IN1K;
🟢Flextok_d18_d28_in1k - 18\28 слоев энкодер-декодер, датасет IN1K;
🟢Flextok_d18_d28_dfm - 18\28 слоев энкодер-декодер, датасет DFN.
▶️VAE:
🟠Flextok_vae_c4 - 4 каналов латента, коэффициент понижающей дискретизации 8;
🟠Flextok_vae_c8 - 8 каналов латента, коэффициент понижающей дискретизации 8;
🟠Flextok_vae_c16 - 16 каналов латента, коэффициент понижающей дискретизации 8.
🟡Страница проекта
🟡Набор на HF
🟡Arxiv
🟡Demo
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#Tokenizer#Flextok#Apple
🌟Minimax VTP: гибридный токенизатор для диффузии на стероидах.
В диффузионных архитектурах считается, что масштабировать первую стадию, VAE - занятие неблагодарное.
Eго задача - превратить пиксели в латентный код и обратно, а добавление ему параметров или данных никак не помогает основной модели DiT генерировать изображения лучше.
MiniMax решила поменять правила игры и представила Visual Tokenizer Pre-training (VTP).
Их гипотеза заключается в том, что токенизатор должен не просто механически "зиповать" пиксели, а понимать семантику изображения.
Чтобы реализовать это, они объединили в обучении токенизатора сразу 3 лосса:
🟢Стандартный pixel reconstruction loss;
🟢Self-supervised learning (через Masked Image Modeling и дистилляцию, как в DINOv2);
🟢Image-text contrastive loss (как в CLIP).
Это заставило латентное пространство структурироваться семантически: теперь векторы кодировали смыслы, а не просто цветовые пятна.
🟡Теоретические выкладки подтвердились на практике.
Оказалось, что качество генерации напрямую зависит от "интеллекта" токенизатора. Не меняя архитектуру и гиперпараметры самого DiT и не увеличивая затраты на его обучение, просто за счет использования VTP-токенизатора удалось улучшить метрику FID на 65.8% и ускорить сходимость модели в 3 раза.
🟡Но главное открытие - это то, что заработал закон масштабирования для Stage 1.
Теперь, чем больше вычислительной мощности и данных вливается в претрейн токенизатора, тем качественнее становится итоговая генерация, чего раньше с обычными VAE достичь было невозможно.
🟡В открытом доступе опубликованы 3 чекпоинта VTP с различием по количеству параметров:
🟠VTP-Large - 0.7B;
🟠VTP-Base - 0.3B;
🟠VTP-Small - 0.2B.
📌Лицензирование: MIT License.
🟡Набор моделей
🟡Arxiv
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#Diffusion#Tokenizer#Minimax