Можно ли в 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
🌟MUVERA: уравниваем в скорости многовекторный и одновекторный поиск.
MUVERA - алгоритм, разработанный Google Research, который сводит сложную задачу многовекторного поиска обратно к простому и быстрому MIPS, как в подходах с одним вектором.
Суть проста: вместо того чтобы работать с громоздким набором векторов, MUVERA сжимает его в единый вектор фиксированной длины, так называемый Fixed Dimensional Encoding (FDE). Главный трюк в том, что скалярное произведение этих новых FDE-векторов очень точно аппроксимирует исходную, «честную» метрику Чамфера.
На практике процесс выглядит как двухэтапный конвейер. Сначала MUVERA генерирует FDE для всех документов в базе и индексирует их с помощью обычного MIPS-солвера. Когда приходит запрос, для него тоже создается FDE, и система молниеносно находит небольшой список кандидатов. А уже затем этот короткий список переранжируется с использованием оригинальной, медленной, но точной метрики Чамфера. На выходе получаем и скорость, и качество.
В практическом сравнении с предыдущим SOTA методом PLAID, MUVERA показывает в среднем на 10% более высокую полноту выдачи при сокращении задержки на 90%. Чтобы достичь того же качества, алгоритму требуется отобрать в 5-20 раз меньше кандидатов для финального переранжирования.
Более того, эти FDE-векторы отлично сжимаются — до 32 раз с минимальной потерей качества.
Для тех. кто хочет попробовать, в репозитории проекта на Github есть реализации MUVERA на Python и C++ .
📌Лицензирование: Apache 2.0
🟡Статья
🟡Arxiv
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#LLM#MUVERA#GoogleResearch
⚡️Команда Google Research представила технологию живого перевода речи в речь, которая позволяет говорить на одном языке и почти мгновенно слышать перевод на другом.
Раньше процесс проходил через три этапа: распознавание речи, перевод текста и синтез новой речи, из-за чего задержка могла достигать десятков секунд.
Исследователи оптимизировали весь конвейер, сделали обработку более устойчивой и сократили время реакции. Перевод звучит естественнее, меньше «подправляется» в реальном времени, а паузы стали значительно короче.
Технология приближает момент, когда люди смогут свободно общаться, даже если не знают языка собеседника.
https://research.google/blog/real-time-speech-to-speech-translation
@ai_machinelearning_big_data
#Google#AI#Translation#SpeechToSpeech#GoogleResearch
🚀Прорыв от Google: активное обучение с экономией данных на 10 000× при дообучении LLM
Google разработала масштабируемый процесс *active learning*, который позволяет в десятки тысяч раз сократить объём размеченных данных, необходимых для тонкой настройки больших языковых моделей на сложных задачах — например, при модерации рекламного контента.
🟢 Как работает метод:
1. Стартовая модель (LLM-0) получает промпт и автоматически размечает огромный массив данных.
2. Кластеризация выявляет примеры, где модель путается (наиболее спорные и ценные для обучения).
3. Отбор данных: из этих кластеров выбирают информативные и разнообразные примеры.
4. Экспертная разметка — только для выбранных примеров.
5. Итерации: дообучение модели → новый отбор спорных примеров → разметка → снова обучение.
🟢Результаты:
- Сокращение с 100 000 размеченных примеров до менее 500 при сохранении или улучшении качества.
- Улучшение метрики *Cohen’s Kappa* на 55–65 %.
- В больших продакшн-моделях — до 3–4 порядков меньше данных при сопоставимом или лучшем качестве.
🟢Что такое Cohen’s Kappa?
Это метрика, которая показывает, насколько два "судьи" (например, эксперт и модель) согласны между собой с поправкой на случайные совпадения.
- 0.0 — нет согласия (или хуже случайного)
- 0.41–0.60 — умеренное согласие
- 0.61–0.80 — значительное
- 0.81–1.00 — почти полное согласие
В задачах с дисбалансом классов Kappa даёт более честную оценку, чем обычная точность (accuracy).
Чем лучше предыдущих методов:
- Точечная разметка: размечаются только самые информативные примеры.
- Масштабируемость: метод применим к наборам данных с сотнями миллиардов примеров.
- Экономия ресурсов: меньше времени и затрат на разметку.
- Быстрая адаптация: подходит для доменов с быстро меняющимися правилами (реклама, модерация, безопасность).
🟢Вывод:
При умном отборе данных LLM можно адаптировать в тысячи раз быстрее и дешевле, чем при традиционном обучении на больших размеченных наборах.
#GoogleResearch#ActiveLearning#AI#LLM#MachineLearning#DataEfficiency
🟠Почитать подробно
@ai_machinelearning_big_data
#GoogleResearch#ActiveLearning#AI#LLM#MachineLearning#DataEfficiency
⚡Speculative Cascades — как ускорить работу LLM
Google Research придумали новый способ сделать большие языковые модели быстрее и дешевле.
Что это такое:
🔹Каскады
Сначала отвечает маленькая модель. Если задача слишком сложная - подключается большая. Так экономятся ресурсы, но качество может прыгать.
🔹Спекулятивная декодировка
Маленькая модель угадывает сразу несколько слов вперёд. Большая быстро проверяет данные и подтверждает. Скорость выше, но большая модель всё равно тратит много ресурсов.
🟢Speculative Cascades
Это комбинация: маленькая модель иногда отвечает полностью сама, а иногда используется как ускоритель для большой. В итоге получаем меньше затрат, больше скорости и то же качество.
🔥Что показали тесты (тестили на Gemma, T5):
- быстрее, чем обычная спекулятивная декодировка
- дешевле и качественнее, чем каскады
- удобнее настраивать баланс «скорость ↔ качество»
При том же уровне качества, что и у спекулятивной декодировки, новый метод работает быстрее (генерирует больше токенов за один вызов большой модели).
А в задачах математических рассуждений получен явный апгрейд по скорости при сохранении или даже улучшении качества.
LLM всё чаще используются в поиске, чатах, ассистентах. Чтобы они реально были полезными, их нужно ускорять и удешевлять. *Speculative cascades* помогают это сделать без потери качества.
🔗Подробнее: https://research.google/blog/speculative-cascades-a-hybrid-approach-for-smarter-faster-llm-inference/
@ai_machinelearning_big_data
#AI#LLM#Inference#SpeculativeDecoding#Cascades#GoogleResearch
⚡️ Google представила Coral NPU - открытую платформу для создания умных ИИ-устройств на Эйдж девайсах
Это полный стек для разработки локального искусственного интеллекта, который работает без облака и практически без задержек.
Coral NPU - это новый тип нейропроцессора (Neural Processing Unit), созданный для умных гаджетов, IoT и носимых устройств.
Можно обучать и запускать модели прямо на устройствах с низким энергопотреблением - от датчиков и дронов до мини-роботов и камер. Coral NPU позволяет делать это быстро и безопасно.
🧩 Врунти:
- SDK и инструменты для TensorFlow Lite и ONNX
- Компилятор, квантование и оптимизация моделей
- Поддержка Python, C++ и микроконтроллеров
Как это работает
1. Модель обучается (в TensorFlow / PyTorch).
2. Компилятор Coral NPU превращает её в оптимизированный код через MLIR → IREE → NPU binary.
3. Код работает прямо на устройстве, используя:
- RISC-V (управляет задачами)
- Векторные блоки( выполняют параллельные операции)
- Матричные ускорители MAC (считают нейронные сети за милливатты энер)гии.
Результат - ИИ-инференс с производительностью до 512 миллиардов операций в секунду, при этом устройство потребляет очень мало ресурсов и не передаёт данные в облако.
Edge AI получает свою открытую архитектуру от Google.
Подробнее: https://research.google/blog/coral-npu-a-full-stack-platform-for-edge-ai/
@ai_machinelearning_big_data
#EdgeAI#GoogleResearch#CoralNPU#RISC_V#AIHardware