Impostazioni

LibreYOLO non ha un file di configurazione. Il comportamento che non è un argomento di funzione è controllato da variabili d'ambiente e da un piccolo numero di directory convenzionali, tutte elencate qui.

Variabili d'ambiente

VariabileValore predefinitoEffetto
LIBREYOLO_DATASETS_DIR~/datasetsRadice dei dataset. Letta una sola volta all'import, dentro libreyolo.data.DATASETS_DIR
LIBREYOLO_FASTER_COCO_EVALnon impostataSovrascrive il flag di validazione faster_coco_eval. 1, true, yes o on forza l'attivazione del backend più veloce, qualsiasi altro valore lo disattiva, se non impostata si affida al flag della configurazione
LIBREYOLO_KERNELSnon impostataSelezione dei kernel. off o reference forza le implementazioni di riferimento; qualsiasi altro valore seleziona solo le implementazioni registrate sotto quel nome
LIBREYOLO_QUANT_KERNELSnon impostataAlias legacy di LIBREYOLO_KERNELS, letto solo quando quest'ultima non è impostata
LIBREYOLO_HUB_KERNELSnon impostata0, false, off o no disabilita il caricamento dei kernel dall'Hub di Hugging Face. Qualsiasi altro valore, compresa l'assenza, lo lascia abilitato
LIBREYOLO_MHR_PATH~/.cache/libreyolo/mhr/mhr_model.ptPosizione del modello MHR body usato dal task mesh
LIBRELABEL_ENABLE_LOCATEnon impostataDeve valere esattamente 1, true, yes o on per esporre l'assistente LocateAnything nello strumento di etichettatura. Qualsiasi altro valore lo tiene disattivato
SAM_3D_BODY_PATHnon impostataPercorso del pacchetto SAM 3D Body per la famiglia mesh, quando non viene passato al costruttore
HF_TOKENnon impostataToken di accesso Hugging Face, usato per i repository ad accesso limitato

Puntare la radice dei dataset altrove
export LIBREYOLO_DATASETS_DIR=/data/datasetspython -c "from libreyolo.data import DATASETS_DIR; print(DATASETS_DIR)"
Leggere il valore risolto da Python
from libreyolo.data import DATASETS_DIR # Il valore predefinito è ~/datasets; LIBREYOLO_DATASETS_DIR lo sovrascrive al momento dell'import.print(DATASETS_DIR)

LIBREYOLO_DATASETS_DIR viene letta al momento dell'import, quindi impostarla dopo aver importato libreyolo.data non ha alcun effetto su DATASETS_DIR.

I kernel dell'Hub sono un opt-in in due parti. Il recupero a runtime avviene solo quando il pacchetto opzionale kernels è installato, quindi installare libreyolo[hub-kernels] è l'opt-in e LIBREYOLO_HUB_KERNELS=0 è l'opt-out. Un'installazione senza l'extra non è influenzata né in un senso né nell'altro.

Anche la selezione dei kernel accorcia gli import: quando LIBREYOLO_KERNELS forza off o reference, i provider accelerati interni non vengono importati affatto. Il registro che queste tre variabili controllano è documentato su kernels.

Variabili che la libreria imposta

Queste vengono scritte anziché lette, quindi impostarle a mano non è il percorso supportato.

VariabileImpostata da
RANK, LOCAL_RANK, WORLD_SIZE, MASTER_ADDR, MASTER_PORTL'helper di spawn DDP, un valore per ogni processo worker
CUDA_VISIBLE_DEVICESRistretta temporaneamente durante il setup distribuito, poi ripristinata
PYTORCH_ENABLE_MPS_FALLBACKImpostata a 1 dai trainer EC, con setdefault, così un valore esistente prevale
MOMENTUM_ENABLEDImpostata con setdefault dal loader della famiglia mesh

LOCAL_RANK funge anche da segnale di modalità distribuita: la sua presenza nell'ambiente è il modo in cui il codice di addestramento rileva di essere in esecuzione sotto DDP.

Variabili dei logger

I logger di addestramento opzionali ricadono sui valori predefiniti dell'ambiente per il nome del progetto.

VariabileValore predefinitoUsata da
WANDB_PROJECTlibreyoloIl logger Weights and Biases, quando non viene passato alcun progetto
COMET_PROJECT_NAMElibreyoloIl logger Comet, quando non viene passato alcun progetto

L'autenticazione per quei servizi segue i loro strumenti, non LibreYOLO.

Token

HF_TOKEN è il token di accesso a Hugging Face. Quando non è impostata, il token viene letto da ~/.cache/huggingface/token, che è dove lo scrive un login con la CLI di Hugging Face. Entrambi i percorsi funzionano.

Un token serve solo per i repository ad accesso limitato. SAM 3 è l'esempio incluso: i suoi pesi si scaricano da un repository ad accesso limitato con una licenza personalizzata, quindi bisogna accettare i termini sulla pagina del repository e la sessione deve essere autenticata.

Directory

PercorsoContenuto
weights/Checkpoint scaricati, snapshot Hugging Face scaricati e artefatti esportati
~/datasetsRadice dei dataset, a meno che LIBREYOLO_DATASETS_DIR non dica altrimenti
~/.cache/huggingface/tokenToken Hugging Face, quando non è in HF_TOKEN
~/.cache/libreyolo/mhr/mhr_model.ptModello MHR body, a meno che LIBREYOLO_MHR_PATH non dica altrimenti
runs/track/Output predefinito di model.track(save=True)

weights/ è relativa alla directory di lavoro. Un nome di file nudo si risolve attraverso di essa, quindi LibreYOLO("LibreYOLO9t.pt") cerca weights/LibreYOLO9t.pt e scarica lì quando non c'è. model.export() scrive nella stessa directory quando output_path non viene indicato. I tier fratelli scaricano snapshot multi-file in weights/<Prefix><size>/.

Comportamento dei download

I download dei pesi vengono ritentati tre volte con backoff, riprendono da un file parziale e sono protetti da un file di lock così due processi non recuperano lo stesso checkpoint contemporaneamente. Una famiglia che scarica da un host di terze parti può fissare un checksum e fallire in modo esplicito su una discrepanza.

Alcuni download stampano un avviso di licenza prima di iniziare. Quegli avvisi fanno parte del percorso di download e non si possono sopprimere tramite configurazione.

Backend di validazione

model.val() accetta faster_coco_eval=True per impostazione predefinita e ricade su pycocotools quando il pacchetto non è installato, avvisando una sola volta. Impostare LIBREYOLO_FASTER_COCO_EVAL sovrascrive il flag della singola chiamata, ed è quello che dovrebbe usare un'infrastruttura di benchmark che non può toccare le configurazioni delle singole esecuzioni. Il backend che ha davvero girato viene riportato su model.last_eval_backend.

Script di download dei dataset

Un YAML di dataset può contenere un campo download con del codice Python. Non viene eseguito a meno che non si passi allow_download_scripts=True alla chiamata che lo legge, ed è un argomento di funzione su val() e export() anziché una variabile d'ambiente.

Variabili individuate cercando os.environ e os.getenv in libreyolo/**/*.py alla v1.5.0; semantica letta in ogni punto di utilizzo. Convenzioni sulle directory lette da libreyolo/data/utils.py, libreyolo/utils/download.py, libreyolo/export/exporter.py, libreyolo/models/base/model.py e libreyolo/models/sam3dbody/mhr_body.py.