Машинное обучение digest
47 subscribers
1.51K photos
203 videos
785 links
Download Telegram
🌟 Emu3: набор MMLM, основанный на методе предсказании следующего токена.

Модели Emu3 разработаны для задач мультимодальной генерации и восприятия: генерации изображений и видео по текстовому описанию, понимание визуальных представлений и прогнозирования кадров в видео.

Модель использует токенизатор изображений SBER-MoVQGAN для преобразования видео и изображений в дискретные токены, RMSNorm для нормализации, GQA для механизмов внимания, SwiGLU для активации и RoPE для позиционного кодирования.

Процесс генерации в Emu3 начинается с обработки моделью начальной последовательности токенов (например, текстовое описание для генерации изображения).

Затем Emu3 авторегрессивно предсказывает наиболее вероятный следующий токен в последовательности. Этот процесс продолжается до тех пор, пока не будет сгенерирована вся последовательность, представляющая собой конечный результат (изображение или видео).

▶️ Представлены 3 модели:

🟢Emu3-Chat – модель-чат, анализирует входные изображения и генерирует текстовые ответы;

🟢Emu3-Gen – модель для генерации изображений по текстовому описанию;

🟢Emu3-VisionTokenizer – токенизатор изображений для преобразования изображений и видео в дискретные токены.

Для обучения использовались наборы данных 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


📌Лицензирование : Apache 2.0 License.


🟡Страница проекта
🟡Коллекция моделей на HF
🟡Arxiv
🖥GitHub


@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
👩‍💻 Ускорь Pandas в 20 раз, изменив всего одну строчку кода! 🔥

💡 Pandas часто бывает медленным. Но есть простое решение: FireDucks — библиотека с таким же API, как у Pandas, которая решает значительно ускоряет обработку данных.

Как ускорить Pandas?

🌟 Просто замените импорт библиотеки:

Было:


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 довольно просто. Во-первых, при определении объекта 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.


▶️ Практические туториалы с возможностью запуска на Google Coolab:

🟢анализ на основе пространственно-временного набора данных из 20 временных рядов еженедельных случаев заболевания ветряной оспой в Венгрии в период с 2005 по 2015 гг. Блокнот;

🟢анализ данных из об уровне загрязнения воздуха, измеряемом датчиками по всему Лондону каждый час. Блокнот.


▶️Локальная установка:

# 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



📌Лицензирование : Apache 2.0 License.


🟡Документация
🟡Arxiv
🖥GitHub


@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
✔️ YOLO11: новая эра в компьютерном зрении.

Компания 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
🌟 VPTQ: экстремальное квантование векторов LLM с низким битрейтом от Microsoft.

Vector Post-Training Quantization (VPTQ) - экспериментальный метод, который использует векторное квантование LLM c сохранением высокой точности при сверхнизкой битовой ширине (<2 бит).

🔥 VPTQ позволяет сжать 70B до 1-2 бит без переобучения и запустить ее на потребительской 4090.

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 отличается низкими вычислительными затратами процесса квантования (10.4-18.6% от времени аналогичных алгоритмов) и высокой пропускной способностью при инференсе (в 1.6-1.8 раза выше, чем у SOTA)

В сообществе VPTQ на Huggingface выложена 41 модель в разрядностях VPTQ-квантования от 1.375 до 4 bits:

🟢Llama 3.1 Instruct (8B, 70B и 405B);

🟢Qwen 2.5 Instruct (7B, 14B и 72B) .

Посчитать битность и размер модели по названию на примере Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft:

🟢v8 - длина вектора, равная 8
🟢k65536 - количество центроидов (2^16)
🟢256 - количество остаточных центроидов (2^8)
🟠woft - маркировка without finetune, в расчете не участвует.

Расчет итоговой битности: индекс: 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