304K subscribers
4K photos
705 videos
17 files
4.58K links
Погружаемся в машинное обучение и Data Science

Показываем как запускать любые LLm на пальцах.

По всем вопросам - @haarrp

@itchannels_telegram -🔥best channels

Реестр РКН: clck.ru/3Fmqri
Download Telegram
🌟 vGPU NVIDIA на базе драйвера Nouveau для Linux.

NVIDIA представила набор патчей для ядра Linux с технологией vGPU для использования виртуальных графических процессоров в системах виртуализации. vGPU разделяет ресурсы физического графического процессора NVIDIA, привязывая каждый виртуальный GPU к виртуальной функции PCI Express.

Драйвер vGPU работает с видеокартами NVIDIA на архитектуре Ada Lovelace, создавая от одного до нескольких виртуальных GPU в зависимости от модели карты. В хост-системе создание и сопряжение виртуальных GPU с гостевыми системами выполняются изменённым драйвером Nouveau. В гостевых системах используются штатные драйверы NVIDIA, как для обычного графического процессора.

Каждый vGPU получает часть памяти из фреймбуфера физического GPU, различаясь типами, назначением, размером видеопамяти, количеством дисплеев и максимальным разрешением экрана.

Реализация технологии vGPU включает базовый драйвер nvkm на основе Nouveau и менеджер vgpu_mgr, реализованный как модуль VFIO. Менеджер создает и удаляет виртуальные GPU, выбирает тип, управляет ресурсами и предоставляет API для управления. Он взаимодействует с базовым драйвером GPU для загрузки прошивки GSP, управления ресурсами, обработки исключений, конфигурации и системных событий.

Также в Mesa Vulkan-драйвер добавлен gfxstream (Graphics Streaming Kit) для доступа к API Vulkan из гостевых систем Linux, Android и Fuchsia. Драйвер, разработанный Google, перенаправляет обращения к графическим API при виртуализации API Vulkan. Он используется в эмуляторе Android, виртуальном устройстве Cuttlefish, сервисе Google Play Games и операционной системе Fuchsia. Gfxstream включен в QEMU и crosvm и поддерживается совместно с устройствами virtio-gpu и goldish.


🟡Страница релиза
🟡Документация
🟡Host Kernel
🟡Guest driver package


@ai_machinelearning_big_data

#AI #ML #vGPU #Linux #NVIDIA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍12🔥8🥰3🐳2
🌟 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
👍25🔥64👏1
🌟 Local File Organizer: менеджмент локальных файлов под управлением LLM и VLM.

Local File Organizer (LFO) - инструмент для управления локальными файлами и папками, который поможет навести порядок. Он использует квантованные в Q4 модели Google Gemma 2-2B и Llava v1.6 в сочетании с Nexa SDK чтобы выполнять заданные операции с локальным содержимым. Последовательность работы LFO выглядит упрощенно так:

🟢Сканирование: LFO сканирует целевой каталог поисках.

🟢Категоризация содержимого: LLM анализирует и обобщает содержимое найденных файлов и создает описания и имена файлам, VLM по такому же принципу обрабатывает графику.

🟢Организация: На основе сгенерированных метаданных, файлы упорядочиваются в новую структуру каталогов.

Весь процесс происходит на 100% на локальном устройстве. Не требуется подключение к Интернет, данные не покидают локальную машину, и не требуется никаких API — файлы остаются в полной конфиденциальности и безопасности.

LFO может работать на CPU и GPU в Windows, macOS и Linux, понимает графические форматы (.png, .jpg, .jpeg, .gif, .bmp), текстовые (.txt, .docx) и PDF-файлы. Системные промпты управления моделями кастомизируемы.

⚠️ Важно!

🟠Для установки с использованием GPU (CUDA, Metal, ROCm) ознакомьтесь с инструкцией по установке.

🟠Аргументы настройки инференса LLM и VLM можно найти тут.

🟠Предварительно скачайте модели Gemma 2-2B и Llava v1.6 и пропишите путь до них в конфигах.

🟠Предварительно установите Tesseract OCR;

🟠Кастомизация системных промптов - в файле data_processing.py.

▶️ Установка и запуск для CPU:

# Clone the Repository
git clone https://github.com/QiuYannnn/Local-File-Organizer.git

#Create & activate Conda env
conda create --name local_file_organizer python=3.12
conda activate local_file_organizer

# Install the CPU version of Nexa SDK
pip install nexaai --prefer-binary --index-url https://nexaai.github.io/nexa-sdk/whl/cpu --extra-index-url https://pypi.org/simple --no-cache-dir

# Install the dependencies
pip install -r requirements.txt

# Running the Script
python main.py



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


🟡Модель Gemma 2-2B
🟡Модель Llava v1.6
🖥GitHub


@ai_machinelearning_big_data

#AI #ML #LLM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍164👀2
🔥 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
👍71🔥97👌1