Powtarzalność: ziarna, konfiguracje i środowiska
random.seed(), np.random.seed(), pliki konfiguracyjne YAML i przypinanie środowiska za pomocą pip freeze.
Powtarzalność: ziarna, konfiguracje i środowiska to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Dlaczego odtwarzalność?
Eksperymentu, którego nie można odtworzyć, nie można uznać za naukowy. Jeśli dwukrotne uruchomienie tego samego kodu daje różne wyniki, nie można ufać porównaniom ani diagnozować regresji.
Trzy filary zapewniają odtwarzalność pracy z AI: ustalone ziarna losowości, wyodrębnione konfiguracje i przypięte wersje środowisk.
Źródła losowości
Losowość może pojawić się w wielu miejscach: podczas tasowania danych, podziału na zbiór treningowy i testowy, inicjalizacji wag, stosowania dropout oraz augmentacji. Każdy z tych procesów może używać innego generatora liczb losowych.
Aby odtworzyć przebieg, należy ustawić ziarno dla każdego generatora używanego przez kod.
Ustalanie ziarna dla Pythona i NumPy
Generatory biblioteki standardowej i NumPy należy ustawić za pomocą jednej wybranej wartości ziarna (42 to często stosowana konwencja).
import random
import numpy as np
random.seed(42)
np.random.seed(42)Ustawianie ziarna w frameworkach
Frameworki ML mają własne generatory. Ich również należy zainicjalizować ziarnem i przekazywać ziarno funkcjom, które przyjmują random_state.
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)
# torch.manual_seed(42) / tf.random.set_seed(42) for deep learningFunkcja pomocnicza set_seed
Wszystkie operacje ustawiania ziaren należy umieścić w jednej funkcji i wywoływać ją na początku każdego skryptu — dzięki temu nie pominą Państwo żadnego generatora.
import random, os
import numpy as np
def set_seed(seed=42):
random.seed(seed)
np.random.seed(seed)
os.environ["PYTHONHASHSEED"] = str(seed)
set_seed(42)Hiperparametry zakodowane na stałe to pułapka
Rozproszenie wartości 0.01, 200 i 0.2 w kodzie utrudnia śledzenie i modyfikowanie uruchomień. Czy współczynnik uczenia w uruchomieniu z najlepszym wynikiem wynosił 0.01 czy 0.001?
Rozwiązanie: należy umieścić wszystkie hiperparametry w pliku konfiguracyjnym, a nie w kodzie.
Pliki konfiguracyjne YAML
YAML to czytelny dla człowieka format, idealny do przechowywania konfiguracji. Jeden plik zawiera wszystkie parametry danego uruchomienia.
# config.yaml
seed: 42
model:
name: random_forest
n_estimators: 200
max_depth: 8
training:
test_size: 0.2
data:
path: data/processed/train.csvOdczytywanie YAML za pomocą PyYAML
Konfigurację należy wczytać na początku skryptu za pomocą PyYAML. Od tej chwili kod odczytuje wartości z cfg, zamiast umieszczać je na stałe w kodzie.
import yaml
with open("config.yaml") as f:
cfg = yaml.safe_load(f)
print(cfg["model"]["n_estimators"]) # 200
set_seed(cfg["seed"])Przekazywanie konfiguracji do kodu
Funkcje przyjmują konfigurację lub jej wartości jako argumenty. Aby uruchomić nowy eksperyment, zmienia się plik YAML, a nie kod Python.
from sklearn.ensemble import RandomForestClassifier
m = cfg["model"]
model = RandomForestClassifier(
n_estimators=m["n_estimators"],
max_depth=m["max_depth"],
random_state=cfg["seed"],
)Przypinanie środowiska
Różne wersje bibliotek dają różne wyniki. Należy przypiąć dokładne wersje, aby inni użytkownicy, a także Państwo w przyszłości, instalowali ten sam zestaw zależności.
# requirements.txt with pinned versions
pandas==2.2.0
scikit-learn==1.4.0
numpy==1.26.4
# generate it with:
# pip freeze > requirements.txtŚrodowiska wirtualne
Każdy projekt należy odizolować, aby przypięte wersje nie kolidowały z wersjami używanymi w innych projektach. Należy utworzyć i aktywować środowisko wirtualne, a następnie zainstalować zależności z przypiętego pliku.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtSzybkie sprawdzenie: hiperparametry
Chcą Państwo wypróbować dziesięć różnych kombinacji hiperparametrów, zachowując możliwość odtworzenia i prześledzenia każdego uruchomienia.
Podsumowanie: odtwarzalność
Poznali Państwo trzy filary odtwarzalnej sztucznej inteligencji:
- Ziarna:
random.seed(42),np.random.seed(42), ziarna frameworków orazrandom_state - Konfiguracje: wszystkie hiperparametry w pliku
config.yaml, wczytywane za pomocą PyYAML - Środowiska: przypięty plik
requirements.txtw środowisku wirtualnym
Należy zmieniać konfigurację, a nie kod. Następnie: dobre praktyki dotyczące notebooków Jupyter.
Często zadawane pytania
Czy lekcja „Powtarzalność: ziarna, konfiguracje i środowiska” jest bezpłatna?
Tak — pełny tekst „Powtarzalność: ziarna, konfiguracje i środowiska” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Powtarzalność: ziarna, konfiguracje i środowiska”?
random.seed(), np.random.seed(), pliki konfiguracyjne YAML i przypinanie środowiska za pomocą pip freeze. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Powtarzalność: ziarna, konfiguracje i środowiska”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Profesjonalna struktura katalogów projektu AI
- Git w projektach AI
- Powtarzalność: ziarna, konfiguracje i środowiska
- Najlepsze praktyki dotyczące notatników Jupyter