Модели Emu3 разработаны для задач мультимодальной генерации и восприятия: генерации изображений и видео по текстовому описанию, понимание визуальных представлений и прогнозирования кадров в видео.
Модель использует токенизатор изображений SBER-MoVQGAN для преобразования видео и изображений в дискретные токены, RMSNorm для нормализации, GQA для механизмов внимания, SwiGLU для активации и RoPE для позиционного кодирования.
Процесс генерации в Emu3 начинается с обработки моделью начальной последовательности токенов (например, текстовое описание для генерации изображения).
Затем Emu3 авторегрессивно предсказывает наиболее вероятный следующий токен в последовательности. Этот процесс продолжается до тех пор, пока не будет сгенерирована вся последовательность, представляющая собой конечный результат (изображение или видео).
Для обучения использовались наборы данных Aquila, LAION-High-Resolution, InternVid, MSCOCO-30K, GenEval, T2I-CompBench, DPG-Bench, SEED-Bench, RealWorldQA, OCRBench и VBench.
Результаты тестирования показывают превосходство Emu3 над SDXL в генерации и сопоставимость с LLaVA-1.6 в задачах интерпретаций изображений.
Инференс моделей пока доступен только в СLI на Transformers, примеры для генерации или описания входного изображения можно найти в репозитории проекта.
⚠️ Информации о технических требованиях по GPU разработчиками Emu3 не предоставлено.
# Clone the repository
git clone https://github.com/baaivision/Emu3
cd Emu3
# Install requirements
pip install -r requirements.txt
@ai_machinelearning_big_data
#AI #ML #MMLM #Text2Video #Text2Image
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
import pandas as pd
import fireducks.pandas as pd
🌟Теперь ваш код работает быстрее без изменений логики! Попробуйте сами и убедитесь, как легко ускорить работу с большими данными!
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
🔥 Memory pinning для ускорения обучения моделей
Если вы регулярно используете GPU для обучения моделей, то существует довольно простая техника, которая часто используется для ускорения обучения моделей.
Рассмотрим стандартный цикл обучения модели в PyTorch (См Картинку 1)
В этом коде:
- Строка 5 передает данные в GPU из CPU.
- Все выполняется на GPU после передачи данных, то есть в строках 7-15.
💡 Это означает, что когда работает GPU, CPU простаивает, а когда работает CPU, GPU простаивает, наглядно(См Картинку 2)
⚡️ Но вот что мы можем сделать, чтобы оптимизировать:
- Когда модель обучается на 1-м батче, CPU может передать 2-й батч на GPU.
- Таким образом, GPU не придется ждать следующего батча данных, как только он завершит обработку существующего батча.
👉 Иными словами, график использования ресурсов будет выглядеть примерно так (См Картинку 3)
💡 В то время, когда CPU будет простаивать, GPU (который является фактическим ускорителем для обучения модели) гарантированно будет иметь данные для работы.
Формально этот процесс известен как memory pinning, и он используется для ускорения передачи данных от CPU к GPU, делая процесс обучения асинхронным.
Это позволяет нам готовить следующий обучающий набор параллельно с обучением модели на текущих данных.
👉 Включить эту функцию в PyTorch довольно просто. Во-первых, при определении объекта
Далее, на этапе передачи данных в шаге обучения укажите
⚡️ Готово!
Вот как работает ускорение на примере набора данных MNIST в обучении простой нейронной сети (См Картинку 6)
- Без memory pinning обучение модели на 5 эпохах занимает около 43 секунд:
- а с использованием memory pinning та же модель обучается менее чем за 10 (!!!) секунд 🔥(См Картинку 7)
📌 Важные особенности использования memory pinning:
- если несколько тензоров будут выделены в "привязанную" память, это приведет к резервированию значительной части оперативной памяти.
- когда набор данных относительно мал, memory pinning имеет незначительный эффект, поскольку передача данных от CPU к GPU все равно не занимает столько времени (См Картинку 7)
📌 Полная версия
@ai_machinelearning_big_data
Если вы регулярно используете GPU для обучения моделей, то существует довольно простая техника, которая часто используется для ускорения обучения моделей.
...изменив всего две строки кода.
Рассмотрим стандартный цикл обучения модели в PyTorch (См Картинку 1)
В этом коде:
- Строка 5 передает данные в GPU из CPU.
- Все выполняется на GPU после передачи данных, то есть в строках 7-15.
💡 Это означает, что когда работает GPU, CPU простаивает, а когда работает CPU, GPU простаивает, наглядно(См Картинку 2)
⚡️ Но вот что мы можем сделать, чтобы оптимизировать:
- Когда модель обучается на 1-м батче, CPU может передать 2-й батч на GPU.
- Таким образом, GPU не придется ждать следующего батча данных, как только он завершит обработку существующего батча.
👉 Иными словами, график использования ресурсов будет выглядеть примерно так (См Картинку 3)
💡 В то время, когда CPU будет простаивать, GPU (который является фактическим ускорителем для обучения модели) гарантированно будет иметь данные для работы.
Формально этот процесс известен как memory pinning, и он используется для ускорения передачи данных от CPU к GPU, делая процесс обучения асинхронным.
Это позволяет нам готовить следующий обучающий набор параллельно с обучением модели на текущих данных.
👉 Включить эту функцию в PyTorch довольно просто. Во-первых, при определении объекта
DataLoader надо установить pin_memory=True и указать num_workers (См Картинку 4)Далее, на этапе передачи данных в шаге обучения укажите
non_blocking=True (См Картинку 5)⚡️ Готово!
Вот как работает ускорение на примере набора данных MNIST в обучении простой нейронной сети (См Картинку 6)
- Без memory pinning обучение модели на 5 эпохах занимает около 43 секунд:
- а с использованием memory pinning та же модель обучается менее чем за 10 (!!!) секунд 🔥(См Картинку 7)
📌 Важные особенности использования memory pinning:
- если несколько тензоров будут выделены в "привязанную" память, это приведет к резервированию значительной части оперативной памяти.
Поэтому, всякий раз, когда используете memory pinning - отслеживайте потребление RAM!
- когда набор данных относительно мал, memory pinning имеет незначительный эффект, поскольку передача данных от CPU к GPU все равно не занимает столько времени (См Картинку 7)
📌 Полная версия
@ai_machinelearning_big_data
Байесовские нейронные поля (Bayes NF) - метод масштабируемого пространственно-временного прогнозирования, объединяющий архитектуру глубокой нейронной сети моделирования функций с иерархическим Байесовским моделированием для точной оценки неопределенности в сложных пространственно-временных полях.
Bayes NF строятся на основе Байесовской нейронной сети, отображающей многомерные пространственно-временные координаты в действительное поле.
Для получения высокой априорной вероятности для данных как с низко-, так и с высокочастотными вариациями, к исходным данным о времени и положении, подающимся в сеть, добавляются признаки Фурье, а чтобы учитывать априорные неопределенности, параметры сети получают априорное распределение.
Апостериорный вывод осуществляется с помощью стохастических ансамблей оценки максимального апостериори (MAP) или вариационно обученных суррогатов.
Метод Bayes NF относительно прост, он может обрабатывать пропущенные данные и обучаться по полному распределению вероятностей для произвольных пространственно-временных индексов.
Bayes NF универсален и применим к различным наборам данных без необходимости разработки новой модели для каждого случая или применения специфических для набора данных аппроксимаций вывода.
⚠️ Для локального запуска BayesNF на средних и больших объемах данных требуется GPU.
# Install bayesnf from PIP into venv:
$ python -m venv pyenv
$ source pyenv/bin/activate
$ python -m pip install -U bayesnf
# Install dependencies for Python 3.10
$ python -m pip install -r requirements.Python3.10.14.txt
@ai_machinelearning_big_data
#AI #ML #Predictions #BAYESNF
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Компания Ultralytics представила YOLO11, новейшую версию своей знаменитой модели искусственного интеллекта для компьютерного зрения.
YOLO11 поддерживает широкий спектр задач CV: обнаружение объектов, сегментацию экземпляров, классификацию изображений, оценку позы, обнаружение ориентированных объектов (OBB) и отслеживание объектов. Модель получила улучшенное извлечение признаков.
YOLO11m достигает более высокого балла средней средней точности (mAP) в наборе данных COCO, используя на 22% меньше параметров, чем YOLOv8m.
YOLO11 вскоре будет доступна через Ultralytics HUB и пакет Ultralytics Python.
ultralytics.com
Please open Telegram to view this post
VIEW IN TELEGRAM
Vector Post-Training Quantization (VPTQ) - экспериментальный метод, который использует векторное квантование LLM c сохранением высокой точности при сверхнизкой битовой ширине (<2 бит).
VPTQ использует технику оптимизации второго порядка для векторного квантования в LLM. Ключевым алгоритмом VPTQ является "Channel-Independent Second-Order Optimization" - квантование каждого столбца матрицы весов независимо и использование взвешенной по матрице Гессе инициализации центроидов.
Оптимизация в VPTQ состоит из применения взвешенных К-средних для центроидов, остаточного векторного квантования (RVQ) в качестве балансировщика ошибки и исключения выбросов в весах для повышения точности .
Эксперименты на моделях LLaMA-2, LLaMA-3 и Mistral-7B показали, что в сравнении с существующими методами, VPTQ обеспечивает сопоставимую или более высокую точность при 2-битном квантовании, уменьшая перплексию
на 0.01-0.34, 0.38-0.68 и 4.41-7.34 соответственно. В сообществе VPTQ на Huggingface выложена 41 модель в разрядностях VPTQ-квантования от 1.375 до 4 bits:
Посчитать битность и размер модели по названию на примере
Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft:Расчет итоговой битности: индекс: log2(65536) = 16 / 8 = 2 bits, остаточный индекс: log2(256) = 8 / 8 = 1 bit, итоговое значение 2 bits+1 bit, = 3 bits.
Расчет размера модели (без учета codebook): 70B * 3 bits / 8 bits = 26.25 GB.
# Set up CUDA PATH:
export PATH=/usr/local/cuda-12/bin/:$PATH
# Clone repo:
pip install git+https://github.com/microsoft/VPTQ.git --no-build-isolation
# Simple generation:
python -m vptq --model=VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft --prompt="..."
# Chatbot example:
python -m vptq --model=VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft --chat
# Gradio Web App
python -m vptq.app
📌Лицензирование кода : MIT License.
📌Лицензирование моделей: cогласно родительской модели.
▪Коллекция моделей на HF
▪Arxiv
▪Сообщество в HF
▪GitHub
@ai_machinelearning_big_data
#AI #ML #LLM #Quantization #Microsoft #VPTQ #hardcore
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM