재현성: 시드, 구성, 환경
random.seed(), np.random.seed(), YAML 구성 파일, pip freeze를 활용한 환경 버전 고정을 다룹니다.
재현성: 시드, 구성, 환경은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
재현성이 중요한 이유
재현할 수 없는 실험은 과학이라고 할 수 없습니다. 같은 코드를 두 번 실행했을 때 결과가 다르면 비교 결과를 신뢰하거나 회귀 문제를 디버깅할 수 없습니다.
인공지능 작업을 재현 가능하게 만드는 세 가지 기둥은 고정된 random 시드, 외부로 분리한 구성, 버전이 고정된 환경입니다.
무작위성의 원천
무작위성은 데이터 섞기, 학습/테스트 분할, 가중치 초기화, 드롭아웃, 데이터 증강 등 여러 곳에서 발생합니다. 각각 서로 다른 무작위 생성기를 사용할 수 있습니다.
실행을 재현하려면 코드가 사용하는 모든 생성기에 시드를 설정해야 합니다.
파이썬과 NumPy에 seed 설정
선택한 하나의 seed로 표준 라이브러리와 NumPy 생성기를 고정합니다(42가 흔히 사용되는 관례입니다).
import random
import numpy as np
random.seed(42)
np.random.seed(42)프레임워크 시드 설정
머신러닝 프레임워크에는 자체 생성기가 있습니다. 생성기에도 시드를 설정하고, 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 learningset_seed 도우미
모든 시드 설정을 하나의 함수로 묶고 모든 스크립트의 맨 위에서 호출하세요. 그러면 생성기를 빠뜨리지 않습니다.
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)하이퍼파라미터 하드코딩은 함정
코드 곳곳에 0.01, 200, 0.2를 흩어 놓으면 실행 결과를 추적하고 변경하기 어려워집니다. 가장 높은 점수를 기록한 실행에서 학습률은 0.01이었을까요, 아니면 0.001이었을까요?
해결 방법은 모든 하이퍼파라미터를 코드가 아니라 구성 파일에 넣는 것입니다.
YAML 구성 파일
YAML은 사람이 읽기 쉬운 형식으로, 구성에 적합합니다. 하나의 파일에 한 번의 실행에 필요한 모든 설정을 담을 수 있습니다.
# config.yaml
seed: 42
model:
name: random_forest
n_estimators: 200
max_depth: 8
training:
test_size: 0.2
data:
path: data/processed/train.csvPyYAML로 YAML 읽기
PyYAML을 사용해 스크립트 시작 부분에서 구성을 불러오세요. 이제 코드에서 값을 하드코딩하는 대신 cfg에서 읽습니다.
import yaml
with open("config.yaml") as f:
cfg = yaml.safe_load(f)
print(cfg["model"]["n_estimators"]) # 200
set_seed(cfg["seed"])코드에 구성 전달하기
함수는 구성 또는 구성의 값을 인수로 받습니다. 새 실험을 실행하려면 파이썬 코드가 아니라 YAML을 변경하면 됩니다.
from sklearn.ensemble import RandomForestClassifier
m = cfg["model"]
model = RandomForestClassifier(
n_estimators=m["n_estimators"],
max_depth=m["max_depth"],
random_state=cfg["seed"],
)환경 버전 고정
라이브러리 버전이 다르면 결과도 달라집니다. 정확한 버전을 고정해 다른 사람과 미래의 내가 동일한 소프트웨어 구성을 설치하도록 하세요.
# 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가상 환경
각 프로젝트를 격리하면 버전을 고정해도 다른 프로젝트와 충돌하지 않습니다. 가상 환경을 만들고 활성화한 다음, 버전이 고정된 파일에서 설치하세요.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt빠른 확인: 하이퍼파라미터
서로 다른 하이퍼파라미터 조합 열 가지를 시도하면서 각 실행을 재현 가능하고 추적 가능하게 유지하려고 합니다.
복습: 재현성
재현 가능한 AI를 위한 세 가지 핵심 요소를 배웠습니다.
- 시드:
random.seed(42),np.random.seed(42), 프레임워크 시드,random_state - 구성: 모든 하이퍼파라미터를
config.yaml에 넣고 PyYAML로 불러오기 - 환경: 가상 환경에서 버전이 고정된
requirements.txt사용
코드가 아니라 구성을 변경하세요. 다음 주제는 주피터 노트북 모범 사례입니다.
자주 묻는 질문
“재현성: 시드, 구성, 환경” 강의는 무료인가요?
네 — “재현성: 시드, 구성, 환경” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“재현성: 시드, 구성, 환경”에서 뭘 배우나요?
random.seed(), np.random.seed(), YAML 구성 파일, pip freeze를 활용한 환경 버전 고정을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“재현성: 시드, 구성, 환경” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 전문적인 인공지능 프로젝트 디렉터리 구조
- 인공지능 프로젝트를 위한 Git
- 재현성: 시드, 구성, 환경
- Jupyter 노트북 모범 사례