Что делать если нужно поставить какую-то Python-библиотеку а root-прав нет? То есть в систему библиотеку никак и ничего не поставить.
Есть как минимум два способа это решить правильно!
🔸 Сделать виртуальное окружение и ставить там что угодно.
Это позволит создать полностью независимое исполняемое окружение для ваших приложений.
Все библиотеки будут храниться в домашней директории юзера а значит доступ на запись имеется.
Создать очень просто:
python3 -m venv ~/venvs/myenvname
Теперь активируем окружение
# Linux
source ~/venvs/myenvname/bin/activate
# Windows
%userprofile%\venvs\myenvname\Scripts\activate.bat
Можно ставить любые библиотеки и запускать приложение.
Это стандартный метод работы с любым проектом. Если еще не используете его, то пора начинать. Даже при наличии root доступа!
🔸 Бывает, что нет возможности запустить приложение из своего виртуального окружения. Например, его запускает какой-то сервис от вашего юзера и вставить активацию окружения вы не можете.
В этом случае можно установить библиотеки для Python не глобально в систему, а только для юзера.
Выполните этот код в консоли:
python3 -m site
Вы получите что-то такое:
sys.path = [
'/home/user',
'/usr/lib/python37.zip',
'/usr/lib/python3.7',
'/usr/lib/python3.7/lib-dynload',
'/home/user/.local/lib/python3.7/site-packages',
...
]
USER_BASE: '/home/user/.local'
USER_SITE: '/home/user/.local/lib/python3.7/site-packages'
ENABLE_USER_SITE: True
Нас интересует параметр USER_SITE. Это путь к пользовательским библиотекам, которые доступны по умолчанию, если они есть.
Именно сюда будут устанавливаться модули если добавить флаг --user при установке чего-либо через pip
pip install --user requests
Для этой команды не нужны root-права.
После неё можно запускать системный интерпретатор без виртуальных окружений и установленная библиотека будет доступна для текущего юзера.
Параметр USER_BASE показывает корневую директорию для хранения user-библиотек. Её можно изменить с помощью переменной окружения PYTHONUSERBASE
export PYTHONUSERBASE=~/pylibs
python3 -m site
...
USER_BASE: '/home/user/pylibs'
USER_SITE: '/home/user/pylibs/lib/python3.7/site-packages'
Получается некоторое подобие виртуального окружения для бедных 😁 которое можно менять через эту переменную (не делайте так!Лучше venv!)
🔸 Дописывание пути в PYTHONPATH
Этот способ не входит в список "двух правильных", но тоже рабочий. Здесь придётся сделать всё несколько сложней.
Сначала ставим библиотеку в любое место указывая путь установки
pip3 install -t ~/mylibs modulename
Библиотека установится без привязки к какому-либо интерпретатору. То есть по умолчанию не будет видна. Теперь в нужный момент добавляем этот путь в sys.path или в PYTHONPATH.
Не буду советовать так делать. Единственный раз когда этот способ мне пригодился и решил поставленную задачу, это при создании общей библиотеки для кластера компьютеров.
Модули лежат в сети и подгружаются для всех из одного и того же места. То есть обновлять файлы требуется только один раз а не на всех хосты отдельно.
Минусы такого подхода:
▫️Нужно всем хостам пробить нужный путь в .bashrc или ещё куда-то чтобы он сетапился на старте.
▫️Чем больше хостов тем больше нагрузка на сеть. Иногда такой способ не подходит именно по этой причине. Тогда Ansible вам в помощь.
▫️Не очень подходит если хосты с разными операционками. Некоторые библиотеки различаются для Linux и Windows (там, где есть бинарники) и приходится мудрить более сложные схемы.
#tricks#basic
🌟BitDance: авторегрессионная генерация изображений с бинарными токенами.
Генеративные модели делятся на 2 лагеря: диффузионные и авторегрессионные. Вторые концептуально ближе к LLM - генерируют изображение токен за токеном, как текст. Проблема в том, что это очень медленно, а качество проигрывает диффузии.
BitDance - экспериментальная 14B AR-модель, которая пытается решить оба этих вопроса разом.
Этим проектом группа китайских рисёчеров показала, что правильный бинарный токенизатор + diffusion head + параллельный патчинг закрывает большинство претензий.
Они локализовали 3 проблемы дискретных AR-моделей и закрыли каждую отдельным решением.
🟡Плохая реконструкция токенизатора
Вместо VQ-кодбука тут используется бинарный токенизатор на основе квантования с групповым разбиением каналов. Словарь вырастает до 2²⁵⁶ (для сравнения: у Cosmos - 65536), при этом модель держит PSNR 25.29 против 24.81 у непрерывного DC-AE, то есть бинарные токены реконструируют изображение лучше, чем VAE у SANA.
🟡Нестабильный сэмплинг
А как вообще выбирать из словаря в 2²⁵⁶ вариантов? Обучить классификатор на все возможные токены тут не вариант: такой слой не поместится ни в какую память. В качестве решения - прикрутили diffusion head, которая моделирует биты на непрерывном гиперкубе. То есть, модель предсказывает структуру битов через velocity-matching, что и позволяет сэмплить из гигантского пространства состояний.
🟡Скорость
AR генерирует по одному токену за шаг. BitDance за один шаг выдает сразу 64 токена (или 16), при этом модель понимает, как они связаны между собой внутри этого блока. Громко заявленный результат: 30x ускорение относительно next-token AR при сопоставимом качестве. об этом в конце
🟡Тесты
На мелкой версии ImageNet BitDance-H достигает FID 1.24 (лучший результат среди AR-моделей, наравне с xAR-H).
На DPG-Bench (text-to-image) полноценная BitDance набирает 88.28 - это выше FLUX.1-Dev, SD3, Janus-Pro, но уступает Seedream 3.0 и Qwen-Image.
В релизе 2 версии 14B модели, с предикшеном на 16 и 64 токена и макс. разрешением 1Мpx.
Остается вопрос: насколько бинарный токенизатор + diffusion head добавляет латентности на каждом шаге, даже если самих шагов стало меньше из-за патчинга.
30x по скорости - это сравнение не с диффузионными моделями, которые уже умеют генерировать за 4–8 шагов.
14B - это не про "взял и запустил". Есть конечно версии на ImageNet с разрешением 256х256 для воспроизведения эксперимента, но не за этим мы сюда пришли.
📌Лицензирование: Apache 2.0 License.
🟡Страница проекта
🟡Arxiv
🟡Модель
🟡Demo
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#AR#T2I#BitDance
🌟X-Omni от Tencent: авторегрессионная text-to-image модель с RL.
X-Omni - методика обучения T2I моделей, которая наглядно доказывает, что RL может вдохнуть новую жизнь в авторегрессионный подход и вывести такие модели на SOTA-уровень.
X-Omni построена на гибридной, но при этом унифицированной архитектуре. Схематично она выглядит так:
Семантический токенизатор изображений SigLIP-VQ с фиксированным словарем на 16 384 токена кодирует картинку в дискретные токены. Эти визуальные токены вместе с текстовыми подаются в единую авторегрессионную модель на базе Qwen2.5-7B. Наконец, в финальном рендеринге используется диффузионный декодер на основе FLUX.1-dev.
🟡Уникальность метода - в смеси RL по GRPO и комплексной reward-системе.
Вместо одного критерия, модель оценивается сразу по нескольким направлениям. За эстетику и соответствие предпочтениям человека отвечает HPSv2 и модель Unified Reward. За семантическую связь между промптом и изображением — VLM-модель Qwen2.5-VL-32B. А за самое сложное, отрисовку текста внутри картинки, отвечает отдельная награда на основе OCR-систем GOT-OCR2.0 и PaddleOCR.
Тестовую модель X-Omni обучали на смеси из 200 млн. изображений, которые после токенизации превратились в 600 млрд мультимодальных токенов, а на этапе SFT использовал ещё 1.5 млрд. токенов.
Для RL-фазы был отобран микс из 180 тыс. промптов, состоящий как из творческие запросы, так и задач на рендеринг текста.
🟡И это дало свои плоды, особенно в отрисовке текста, где авторегрессионные модели исторически пасовали.
На бенче OneIG-Bench X-Omni показала результат 0.901 для английского языка, обойдя GPT-4o (0.857). А на собственном LongText-Bench, специально созданном для оценки рендеринга длинных надписей, модель буквально разгромила всех в китайском языке, набрав 0.814 балла против 0.619 у GPT-4o.
В задачах общей генерации по тексту X-Omni также на высоте. На DPG-Bench модель достигла SOTA-результата 87.65, опередив GPT-4o (86.23) и Show-o2 (86.14). На GenEval результат составил 0.83, чуть-чуть не дотянув до модели Mogao (0.89).
Даже в задачах на понимание изображений X-Omni показывает себя достойно: на OCRBench ее результат (704) превосходит другие унифицированные модели, например Emu3 (687).
🟡Интересные подробности.
Во-первых, X-Omni не нуждается в CFG. В отличие от Emu3 или Janus-Pro, качество которых резко падает при отключении CFG, X-Omni работает стабильно.
Во-вторых, что, пожалуй, самое важное, RL превосходит даже SFT с последующим сэмплингом best-of-N.
Этот вывод идет вразрез с устоявшимся мнением в области языкового моделирования и доказывает, что для изображений холистическая оптимизация через RL дает существенный прирост качества.
📌Лицензирование: Apache 2.0 License.
🟡Страница проекта
🟡Набор моделей
🟡Arxiv
🟡Demo
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#T2I#RL#XOmni#Tencent