Что делать если нужно поставить какую-то 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
🌟Tencent сжали 1.8B модель в 2 бита: 600 МБ веса и Dual-CoT на борту.
Tencent Hunyuan выкатили open-source решение для тех, кто хочет запускать LLM локально на кофеварке.
HY-1.8B-2Bit - модель, которую утрамбовали так плотно, что она занимает меньше места, чем многие современные мобильные приложения.
Модель пилили методом Quantization-Aware Training, который в отличие от PTQ, позволяет адаптироваться к низкой разрядности весов еще на этапе тренировки.
За основу взяли backbone Hunyuan-1.8B-Instruct и жестко сжали веса до 2 бит. При этом эффективный размер в памяти получился эквивалентен модели на 300М параметров, а физический вес получился всего 600 МБ.
Что самое ценное - сохранили фичу Dual-CoT: модель умеет переключаться между быстрым мышлением для простых тасков и глубоким long-CoT для сложных.
🟡Бенчмарки
🟢По сравнению с fp16-учителем (1.8B), деградация метрик всего ~4%. Это очень мало для 2-битного квантования.
🟢Разница в точности на сравнении с INT4 ничтожна - 0.13%, хотя весит модель в 2 раза меньше.
🟢Если взять плотную модель на 0.5B параметров, то HY-1.8B-2Bit обходит ее в среднем на 16-17%. На GSM8K разрыв вообще дикий: +22.29%.
🟢Prefill ускорился в 3-8 раз, генерация токенов - в 2-3 раза на поддерживаемом железе.
🟡Жирный нюанс
Текущая реализация требует поддержки инструкций Arm SME2. Это значит, что вся эта красота заведется только на Apple M4 и MediaTek Dimensity 9500.
Если у вас M1/M2 или Snapdragon прошлых поколений - пока мимо. Разработчики обещают подвезти Neon kernel позже.
Кстати, GGUF тоже есть, так что если под рукой есть M4 - можно тестить. Остальным остается ждать оптимизации под старые инструкции.
🟡Модель
🟡GGUF
🟡Техотчет
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#SLM#2bitQ#Tencent
Tiny Aya: семейство мультиязычных SLM.
Cohere Labs выкатили семейство моделей Tiny Aya на 3 млрд. параметров с контекстным окном 8К, которое поддерживает 70+ языков.
Семейство заявляется как достойный кандидат для локальных переводчиков, чат-ботов и образовательных тулзов в оффлайн-режиме. Если необходимо, чтобы было быстро, локально и переводить суахили или кхмерский лучше, чем Llama - это вот оно.
🟡Фишка релиза в дата-инжиниринге.
Tiny Aya учили на 6 трлн. токенов, а проблему нехватки данных для редких языков решали через синтетику от моделей-учителей (своя Command R + DeepSeek-V3).
Вместо того чтобы учить одну модель всему сразу, разбили данные на языковые кластеры (Европа, Азия, Африка и т.д.) и дотюнивали отдельные ветки, после чего смержили эти региональные чекпоинты в глобальную модель Tiny Aya Global.
🟡Состав семейства
Tiny Aya Global: Универсальный чекпоинт для всех языков.
Tiny Aya Earth: Африка и Западная Азия.
Tiny Aya Fire: Южная Азия.
Tiny Aya Water: Азиатско-Тихоокеанский регион и Европа. Мы тут
GGUF: Есть к каждой версии в 4, 8 и 16-бит.
iOS и Android: модели доступны в PocketPal
🟡Результаты тестов
Global-версия бьет Gemma 3-4B в 46 языках из 61 на бенче WMT24++.
На iPhone 17 Pro выдает 32 токена/сек, на стареньком iPhone 13 - около 10 токенов/сек в квантовании Q4_k_m.
Самый высокий показатель безопасности (91.1%) среди конкурентов (Qwen3-4B, Ministral-3-3B).
🟡Капля реализма
Это 3B модель. В сложных задачах она очевидно хуже или где-то рядом с одноклассниками, чудес ждать не стоит.
Несмотря на заявленное разнообразие, английский язык занимает львиную долю датасета во всех кластерах.
При сильном сжатии (ниже Q4) качество начинает заметно страдать, особенно на редких языках.
📌Лицензирование: CC-BY-NC-4.0 License.
🟡Блогпост
🟡Набор моделей
🟡Техотчет
🟡Demo
@ai_machinelearning_big_data
#AI#ML#SLM#TinyAya#Cohere
#Sudan’s Democratic Bloc split over unauthorized talks in #Ethiopia
Public divisions emerged within Sudan’s Freedom and Change – Democratic Bloc on Sunday after member organizations held unauthorized meetings with international mediators in the Ethiopian capital, #Addis_Abeba.
The “Quintuple Mechanism”—comprising the #African_Union, #IGAD, the #United_Nations, the #Arab_League, and the #European_Union—is seeking to bridge the gap between Sudanese political forces to launch a process on the country’s future governance.
Democratic Bloc spokesperson Juma al-Wakil disavowed the delegation in Addis Ababa, stating the coalition “did not participate in the meeting and did not send a representative delegation.” He added that no authorization had been issued for any entity to represent the bloc in the consultations.
Al-Wakil, who is affiliated with Minni Minawi’s Sudan Liberation Movement (#SLM), said that if members participated, they did so in a “personal or ....
https://sudantribune.com/article/310749