Посмотреть как Markdown

Настройки

У LibreYOLO нет файла конфигурации. Поведение, которое не задаётся аргументом функции, управляется переменными окружения и небольшим набором стандартных каталогов — все они перечислены здесь.

Переменные окружения

ПеременнаяПо умолчаниюДействие
LIBREYOLO_DATASETS_DIR~/datasetsКорень датасетов. Читается один раз при импорте, в libreyolo.data.DATASETS_DIR
LIBREYOLO_FASTER_COCO_EVALне заданаПереопределяет флаг валидации faster_coco_eval. 1, true, yes или on принудительно включают более быстрый бэкенд, любое другое значение выключает его, а если переменная не задана, решает флаг конфигурации
LIBREYOLO_KERNELSне заданаВыбор ядер. off или reference принудительно включают эталонные реализации; любое другое значение выбирает только реализации, зарегистрированные под этим именем
LIBREYOLO_QUANT_KERNELSне заданаУстаревший псевдоним для LIBREYOLO_KERNELS, читается, только если та не задана
LIBREYOLO_HUB_KERNELSне задана0, false, off или no отключают загрузку ядер с Hugging Face Hub. Любое другое значение, включая отсутствие переменной, оставляет её включённой
LIBREYOLO_MHR_PATH~/.cache/libreyolo/mhr/mhr_model.ptРасположение MHR-модели тела, которая используется задачей mesh
LIBRELABEL_ENABLE_LOCATEне заданаДолжна быть ровно 1, true, yes или on, чтобы ассистент LocateAnything появился в инструменте разметки. Любое другое значение оставляет его выключенным
SAM_3D_BODY_PATHне заданаПуть к пакету SAM 3D Body для семейства mesh, когда он не передан в конструктор
HF_TOKENне заданаТокен доступа Hugging Face, используется для репозиториев с ограниченным доступом (gated)

Смена корня датасетов
export LIBREYOLO_DATASETS_DIR=/data/datasetspython -c "from libreyolo.data import DATASETS_DIR; print(DATASETS_DIR)"
Чтение итогового значения из Python
from libreyolo.data import DATASETS_DIR # По умолчанию ~/datasets; LIBREYOLO_DATASETS_DIR переопределяет это при импорте.print(DATASETS_DIR)

LIBREYOLO_DATASETS_DIR читается во время импорта, поэтому если задать её после импорта libreyolo.data, на DATASETS_DIR это уже не повлияет.

Ядра из Hub включаются в два шага. Загрузка во время выполнения происходит только тогда, когда установлен необязательный пакет kernels, так что установка libreyolo[hub-kernels] — это согласие, а LIBREYOLO_HUB_KERNELS=0 — отказ. Установку без этого дополнения не затрагивает ни то, ни другое.

Выбор ядер отсекает и сами импорты: когда LIBREYOLO_KERNELS принудительно задаёт off или reference, встроенные ускоренные провайдеры не импортируются вовсе. Реестр, которым управляют эти три переменные, описан на странице ядра.

Переменные, которые задаёт библиотека

Они записываются, а не читаются, поэтому ручная установка этих переменных не поддерживается.

ПеременнаяКем задаётся
RANK, LOCAL_RANK, WORLD_SIZE, MASTER_ADDR, MASTER_PORTПомощник запуска DDP, по одному значению на рабочий процесс
CUDA_VISIBLE_DEVICESВременно сужается на время настройки распределённого режима, затем восстанавливается
PYTORCH_ENABLE_MPS_FALLBACKУстанавливается в 1 обучающим кодом EC, через setdefault, поэтому уже заданное значение сохраняется
MOMENTUM_ENABLEDЗадаётся через setdefault загрузчиком семейства mesh

LOCAL_RANK заодно служит признаком распределённого режима: именно по её наличию в окружении код обучения понимает, что запущен под DDP.

Переменные логгеров

Для имени проекта необязательные логгеры обучения откатываются к значениям из переменных окружения.

ПеременнаяПо умолчаниюКто использует
WANDB_PROJECTlibreyoloЛоггер Weights and Biases, когда проект не передан
COMET_PROJECT_NAMElibreyoloЛоггер Comet, когда проект не передан

Аутентификация в этих сервисах идёт через их собственные инструменты, а не через LibreYOLO.

Токены

HF_TOKEN — токен доступа Hugging Face. Когда он не задан, токен читается из ~/.cache/huggingface/token — именно туда его записывает вход через Hugging Face CLI. Работают оба варианта.

Токен нужен только для репозиториев с ограниченным доступом. Готовый пример — SAM 3: его веса скачиваются из такого репозитория под собственной лицензией, поэтому условия нужно принять на странице репозитория, а сессия должна быть аутентифицирована.

Каталоги

ПутьСодержимое
weights/Скачанные чекпойнты, скачанные снапшоты Hugging Face и экспортированные артефакты
~/datasetsКорень датасетов, если LIBREYOLO_DATASETS_DIR не говорит иначе
~/.cache/huggingface/tokenТокен Hugging Face, когда его нет в HF_TOKEN
~/.cache/libreyolo/mhr/mhr_model.ptMHR-модель тела, если LIBREYOLO_MHR_PATH не говорит иначе
runs/track/Каталог вывода по умолчанию для model.track(save=True)

weights/ отсчитывается от рабочего каталога. Имя файла без пути разрешается относительно него, поэтому LibreYOLO("LibreYOLO9t.pt") ищет weights/LibreYOLO9t.pt и скачивает туда же, если файла нет. model.export() пишет в тот же каталог, когда output_path не указан. Родственные уровни скачивают многофайловые снапшоты в weights/<Prefix><size>/.

Поведение при скачивании

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

Некоторые загрузки перед стартом выводят уведомление о лицензии. Эти уведомления — часть пути скачивания, и отключить их через конфигурацию нельзя.

Бэкенд валидации

model.val() по умолчанию принимает faster_coco_eval=True и откатывается к pycocotools, когда пакет не установлен, один раз выдав предупреждение. Установка LIBREYOLO_FASTER_COCO_EVAL переопределяет флаг конкретного вызова — именно это стоит использовать бенчмарк-обвязке, которая не может трогать конфигурацию отдельных запусков. Реально сработавший бэкенд указан в model.last_eval_backend.

Скрипты скачивания датасетов

YAML-файл датасета может содержать поле download с кодом на Python. Этот код не выполняется, пока в вызов, который его читает, не передан allow_download_scripts=True — это аргумент функции у val() и export(), а не переменная окружения.

Переменные найдены поиском os.environ и os.getenv по libreyolo/**/*.py на версии 1.5.0; семантика прочитана в каждом месте использования. Соглашения о каталогах прочитаны из libreyolo/data/utils.py, libreyolo/utils/download.py, libreyolo/export/exporter.py, libreyolo/models/base/model.py и libreyolo/models/sam3dbody/mhr_body.py.