1. De referentie en het verwachte resultaat definiëren
Begin met wat je wilt herhalen: dezelfde categorieën produceren, vergelijkbare waarden krijgen of een trainingstraject hervatten. Bewaar een kleine set invoeren die de belangrijke stappen doorloopt en een voorbeeld van geldige uitvoer. Een installatie die zonder fouten eindigt, beantwoordt die vraag nog niet.
Laten we een leergeval nemen: je applicatie produceert embeddings voor een geïdentificeerd monster. In de referentieomgeving moet je de vorm van de uitvoer, het type, de afwezigheid van niet-eindige waarden en het nuttige zakelijke criterium vastleggen. Als je waarden vergelijkt, kies dan een tolerantie die gerechtvaardigd is door je gebruik. Hier wordt geen universele numerieke drempel gegeven.
Ken een revisie toe aan de code, de gegevens en de gewichten. Een naam als "laatste-model" kan veranderen zonder dat het programma dat laat zien. Koppel ook de parameters en de voorverwerking aan de referentie. Dit dossier maakt het mogelijk om te weten of een verschil uit de software, de invoer of de uitvoeringsomstandigheden komt.
Scroll door de tabel om alle kolommen te lezen.| Element | Te bewaren | Controle na reconstructie |
|---|---|---|
| Code en parameters | Revisie, eventuele wijzigingen, configuratie | Hetzelfde toegangspunt en dezelfde opties. |
| Gegevens en gewichten | Versie of vingerafdruk, herkomst en toegangsrechten | Hetzelfde monster en dezelfde verwachte inhoud. |
| Python en pakketten | Versies, procedure en installatiebronnen | Correcte interpreter en consistente afhankelijkheden. |
| Systeem en backend | OS, architectuur, stuurprogramma, CUDA of ROCm | Zichtbaar apparaat en geslaagde minimale berekening. |
| Resultaat | Formaat en acceptatiecriteria | Structuur en vervolgens kwaliteit of voorziene tolerantie. |
2. De systeemketen scheiden van de Python-pakketten
Controleer samen de kaart, het systeem, het stuurprogramma, Python en de bibliotheken. Een virtuele omgeving organiseert de Python-pakketten; ze vervangt het stuurprogramma van het systeem niet. Evenzo volstaat de referentie van een image niet om de werkelijke toegang tot de GPU vanaf zijn host te beschrijven. Noteer voor een gecompileerde extensie de nodige compilatiehulpmiddelen en -bibliotheken.
Kies de PyTorch-distributie op basis van het berekeningsplatform van je project. Op ROCm hergebruikt PyTorch de torch.cuda-aanroepen en de apparaten met de naam cuda: de naam van de interface laat niet toe om NVIDIA te identificeren. Noteer torch.version.cuda en torch.version.hip afzonderlijk. Een extensie die voor een bepaalde keten is geschreven, verdient een eigen controle.
Bewaar de procedure die de installatie daadwerkelijk mogelijk heeft gemaakt, met de herkomst van de pakketten. Vermijd het mengen van een recent commando dat je online hebt gevonden met een oud afhankelijkhedenbestand zonder de compatibiliteit ervan te onderzoeken. De geraadpleegde documentatie kan veranderen; noteer de gebruikte versies in je eigen dossier.
3. Een reconstructie schrijven in plaats van de geïnstalleerde map te kopiëren
Maak een nieuwe omgeving met de gekozen Python. Gebruik vervolgens expliciet de interpreter ervan om het project te installeren en te starten. Onder Linux is dat bijvoorbeeld .venv-rebuild/bin/python; onder Windows .venv-rebuild\Scripts\python.exe. Je hoeft niet afhankelijk te zijn van een eerdere activering. De Python-documentatie vermeldt dat een virtuele omgeving opnieuw moet worden aangemaakt wanneer ze van locatie verandert.
pip freeze levert een inventaris van de geïnstalleerde pakketten, geen berekend lockbestand. Bewaar het als observatie. Het reconstructiebestand moet ook de indexen of bestanden expliciet vermelden die nodig zijn voor je PyTorch-variant en de compatibele versies. Lees de paden of URL's die een inventaris kan bevatten na voordat je die deelt.
De onderstaande commando's illustreren een aan te passen Linux-reconstructie; ze vormen geen uitgevoerde test van je project. Het bestand requirements-rebuild.txt moet je omgeving al beschrijven, inclusief de juiste keuze van PyTorch. Vervang het niet door een lijst van veronderstelde universele versies.
python -m venv .venv-rebuild
.venv-rebuild/bin/python -m pip --version
.venv-rebuild/bin/python -m pip install -r requirements-rebuild.txt
.venv-rebuild/bin/python -m pip check
.venv-rebuild/bin/python -m pip freeze --all > installed-after.txt4. Het afhankelijkhedencontract controleren vóór de berekening
python -m pip check, gestart met de juiste interpreter, zoekt naar ontbrekende of incompatibele geïnstalleerde afhankelijkheden op basis van hun metadata. Een resultaat zonder conflicten is geen validatie van het stuurprogramma, de native extensies of de kwaliteit van de applicatie. Houd deze stap dus kort en ga verder naar een berekeningscontrole.
Om de reconstructie strikter te maken, kun je versies vastzetten en de hashes van toegestane distributies bewaren. Deze beslissing vereist dat je de volledige lijst bijhoudt die bij jouw platform hoort. Een archief met gecompileerde wheels kan afhangen van het besturingssysteem en de architectuur; het is geen garantie voor overdraagbaarheid tussen twee verschillende machines.
Vergelijk in ons embeddings-voorbeeld de gereconstrueerde inventaris met de referentie voordat je het model of zijn parameters wijzigt. Als een verschil bedoeld is, noteer het dan en behandel de nieuwe uitvoering als een variant. Zo niet, corrigeer dan de reconstructie; meerdere lagen tegelijk wijzigen maakt de diagnose minder nauwkeurig.
5. Van minimale controle naar toepassing
Noteer in de interpreter van het project Python, PyTorch en de backend, en controleer vervolgens het apparaat en een kleine berekening. Stop deze stap als de verwachte GPU niet toegankelijk is; een terugvaluitvoering op CPU zou de vergelijking vertroebelen. De diagnose van Kernodeck levert een interpreteerbaar rapport en onderscheidt de stappen die daadwerkelijk zijn doorlopen.
Gebruik zodra deze controle slaagt je kleine applicatiemonster. Controleer voor embeddings het aantal uitvoerwaarden, hun dimensies, hun overeenkomst met de identifiers en het gekozen criterium. Laad de bestanden opnieuw vanuit de uitvoermap. Een geslaagde matrixberekening bewijst niet dat de voorverwerking of een uitbreiding van het project werkt.
Als de test vastloopt bij het lezen van de gegevens, bij de overdracht of tijdens een specifieke bewerking, bewaar dan de stap en de eerste fout. De algemene reconstructie is misschien correct; de blokkade kan bij de dataloader of een bepaalde operator horen. Richt de diagnose dan op die laag.
6. Reconstructie en digitale identiteit onderscheiden
Dezelfde afhankelijkheden terugvinden garandeert geen identieke resultaten tussen hardware, platforms of PyTorch-versies. Een seed vastzetten dekt niet alle bronnen van variatie. Documenteer de gebruikte generatoren, de gegevenstransformaties en de relevante instellingen voor precisie of determinisme.
Bepaal het vergelijkingscriterium voordat je naar het verschil kijkt: exacte structuur, numerieke tolerantie of stabiliteit van een metriek. Sommige deterministische instellingen kunnen bewerkingen weigeren of de rekenkosten wijzigen. Het beoogde resultaat is een begrijpelijke conclusie onder de aangekondigde voorwaarden, niet een belofte van identiteit op elke machine.
Voor het hervatten van een training zijn versies niet voldoende: ook de rekenstatus en de voortgang moeten worden hersteld. De hervatmap onderzoekt deze kwestie afzonderlijk. De CPU-oefening en tolerantie ervan worden niet automatisch de voorwaarden van jouw model.
7. Afsluiten met een dossier dat een andere uitvoering kan gebruiken
Het einddossier bundelt de procedure, de waargenomen inventaris, de configuratie, de gegevensreferenties en de resultaten van de controle. Voeg de exacte volgorde toe: reconstrueren, diagnosticeren, het monster uitvoeren, de uitvoer nalezen. Bewaar toegangen apart en geef alleen aan hoe je ze aanlevert.
Doorloop deze volgorde in een schone map voordat je de omgeving als overdraagbaar beschouwt. De controle moet slagen zonder een variabele uit een oude notebook op te halen of een vergeten bestand te zoeken. Als een wijziging nodig is, corrigeer dan de procedure en geef de referentie een nieuwe identiteit. Zo krijg je een bruikbare basis voor je volgende rekenperiode.