Можно ли в Python создавать бинарные файлы? Конечно можно.
Для этого в Python есть следующие инструменты:
▫️ тип данных bytes и bytearray
▫️ открытие файла в режиме wb (write binary) или rb (read binary)
▫️ модуль struct
Про модуль struct поговорим в первую очередь.
Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных.
В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла.
Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла.
Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид.
Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки).
Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение.
При этом следует помнить что мы говорим о типах языка С а не Python.
Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще.
Вот какие токены формата у нас есть.
Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы.
В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты.
Запакуем в байты простое число, токен "i".
>>> import struct
>>> struct.pack('=i', 10)
b'\n\x00\x00\x00'
Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов.
>>> struct.pack('=fff', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же.
>>> struct.pack('=3f', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Теперь запакуем разные типы
>>> data = struct.pack('=fiQ', 1.0, 4, 100500)
я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт)
b'\x00\x00\x80?\x04\x00\x00...'
Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа.
>>> struct.unpack('=fiQ', data)
(1.0, 4, 100500)
Как видите, ничего страшного!
#lib#basic
🌟LinumV2: T2V модель, которую делали вдвоем
Интересная история, которая доказывает, что в индустрии ИИ не всегда нужны миллиарды долларов и сотни сотрудников.
Знакомьтесь - проект Linum.
Два брата, Сахила Чопра и Ману Чопра, сделали две text-to-video модели на 2 миллиарда параметров, которые генерируют клипы длиной от 2 до 5 секунд в разрешении до 720p.
Согласитесь, это редкое явление в мире, где большинство видео-генераторов закрыты за платными API.
Изначально братья совсем не планировали заниматься генерацией видео.
Сахил окончил Стэнфордский университет в 2019, где в соавторстве разработал курс по LLM и занимался исследованиями в области когнитивных наук на стыке ИИ и лингвистики.
Ману досрочно окончил Калифорнийский университет в Беркли в 2021 г.. До основания Linum занимался исследованиями ИИ в биоинженерии.
Стартовав осенью 2022 года и пройдя через YCombinator, они пилили ИИ-инструмент для раскадровки фильмов. Но, пообщавшись с режиссерами, поняли: рынок слишком узкий, а творческий процесс у всех разный.
🟡Первая попытка создания видео-модели
Linum v1, была, по их признанию, франкенштейном. Они взяли за основу SDXL, раздули U-NET, превратив 2D-свертки в 3D и добавили временные слои внимания.
Получился забавный бот для Discord, который делал гифки в разрешении 180p. Это работало, но было тупиковой ветвью эволюции.
Расширять модель, заточенную под картинки, для работы с видео - плохая идея в долгосроке. VAE, идущий в комплекте с имидж-моделью, просто не умеет нормально сжимать и разжимать видеопоток. Качество на выходе получается никакое.
К тому же распределения данных в картинках и видео слишком разные, да и переучивать модель стоит дорого.
🟡V2 решили пилить с нуля.
VAE взяли от Wan 2.1, успев попутно разработать свой собственный temporal VAE, но решили сэкономить на эмбеддингах, DIT и T5 на роль текстового энкодера.
Представьте объем работы: двое парней делали то, чем обычно занимаются отделы с десятками сотрудников.
Они сами собирали датасеты, настраивали VLM для фильтрации контента, писали пайплайны для аннотирования архива видео.
И, конечно, бенчмаркали провайдеров, пытаясь понять, почему H100 у одного хостера работает хуже, чем у другого.
🟡К чему они пришли за 2 года разработки?
Linum v2 — pretrained веса. Модель пока ошибается в физике и эстетике, а генерация 5-секундного клипа в 720p занимает около 15 минут на H100 при 50 шагах.
Но, главное, братья не останавливаются: есть планы по ускорению через CFG и timestep distillation, работа над звуком и масштабированием.
@ai_machinelearning_big_data
#AI#ML#T2V#Linum
🌟TurboDiffusion: ускорение генерации видео в 100+ раз.
Суровая реальность нашего времени: вы хотите сгенерировать 5-секундное видео на большой SOTA-модели. Вы запускаете промпт, идете пить кофе, возвращаетесь, а процесс все еще идет. И зачастую генерация может занимать больше часа.
Главные виновники - чудовищная вычислительная сложность механизма внимания в трансформерах, необходимость сотен шагов денойзинга и огромный объем памяти для весов в полной точности.
Авторы проекта TurboDiffusion из Цинхуа и Беркли решили собрать все эффективные методы сжатия и ускорения в один пайплайн. Их идея заключалась в том, что разреженность и квантование — это техники, которые не мешают друг другу.
🟡Архитектура держится на 3-х китах оптимизации:
🟢Заменили стандартное внимание на гибрид из SageAttention2++ и Sparse-Linear Attention (SLA), который превратил квадратичную сложность в линейную. чтобы модель фокусировалась только на важных токенах.
🟢Дистиллировали сэмплинг через rCM - вместо стандартных 50–100 шагов модель приходит к результату всего за 3-4 шага без потери сути изображения.
🟢Перевели и веса и активации линейных слоев в INT8 используя блочное квантование, чтобы не потерять точность.
В довершении ко всему смогли объединить после файнтюнинга под SLA и дистилляции rCM веса в единую модель, избежав конфликтов.
🟡Результаты бенчмарков выглядят как опечатка, но это не она.
На RTX 5090 время генерации для тяжелой модели Wan2.2-I2V 14B упало с 69 минут до 35.4 секунд. А для более легкой Wan 2.1-1.3B - с почти 3-х минут до 1.8 секунды.
Это ускорение больше чем в 100 раз.
При этом, судя по примерам, визуальное качество осталось практически неотличимым от оригинала.
📌Лицензирование: Apache 2.0 License.
🟡Набор моделей
🟡Техотчет
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#I2V#T2V#TurboDiffusion
Ядерный апгрейд для WAN: FusionX — видео в два раза быстрее и краше! 🔥
Название модели: Wan2.1_14B_FusionX
Ссылка на модель: https://civitai.com/models/1651125?modelVersionId=1868891
Тип модели: #Checkpoint#Merge
Количество скачиваний: 8.8k+
Дата загрузки: 6 июня 2025
Базовая модель: Wan Video 14B t2v
Теги:#merge, #wan, #i2v, #t2v, #wan14b, #video, #cinematic, #animation, #speed
Описание модели | Комментарий разработчика:
Это мощный чекпоинт, созданный слиянием базовой модели WAN 2.1 14B и нескольких передовых моделей (CausVid, AccVideo, MoviiGen1.1). Результат — значительное улучшение качества движения, плавности сцены и детализации, сопоставимое с закрытыми коммерческими аналогами.
Главное преимущество — ускорение рендеринга до 50% по сравнению с базовой моделью, особенно при включении SageAttn. Модель отлично подходит для генерации как из текста, так и из изображения, и полностью совместима с VACE. Автор также выпустил LoRA-версию для тех, кто предпочитает гибкость и контроль.
Помимо основной Text2Video модели, на странице доступны и другие версии: отдельная для Image2Video, а также квантованные GGUF-варианты для экономии VRAM.
Идеальный выбор, чтобы быстро создавать качественные и выразительные кинематографичные ролики.
Важные настройки:
Модель не требует триггерных слов, но для качественного результата критически важны следующие параметры:
CGF должен быть установлен на 1.
Shift: Для разрешения 1024x576 начинайте с 1, для 1080x720 — с 2. Для большего реализма используйте низкие значения, для стилизации — более высокие (3-9).
Шаги: 8–10 шагов для оптимального качества.
🤖НЕЙРО-СКЛАД — всё, что нужно, для твоей нейронки!