0Pricing
Learn AI with Python · Lekcja

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 learning

Funkcja 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.csv

Odczytywanie 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.txt

Szybkie 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 oraz random_state
  • Konfiguracje: wszystkie hiperparametry w pliku config.yaml, wczytywane za pomocą PyYAML
  • Środowiska: przypięty plik requirements.txt w ś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

  1. Profesjonalna struktura katalogów projektu AI
  2. Git w projektach AI
  3. Powtarzalność: ziarna, konfiguracje i środowiska
  4. Najlepsze praktyki dotyczące notatników Jupyter
← Powrót do Learn AI with Python