1. MLflow를 활용한 GCN 모델 예제
https://cow-kite24.tistory.com/344
MLflow를 활용한 GCN 모델 예제 / 25.02.04
MLflow를 설치했으니 간단한 예제 코드로 사용법을 익혀보자.석사 기간 동안 GNN에 대해 많이 다루어봤기 때문에 사용할 모델은 GCN으로 선택했다. 먼저, 사용할 예제 코드이다.해당 코드는 Cora data
cow-kite24.tistory.com
2. Minio Client 설치 및 데이터 업로드
https://cow-kite24.tistory.com/345
MinIO Client 설치 및 데이터 업로드 / 25.02.05
MinIO의 공식 CLI 툴인 MinIO Client (mc)를 설치해보자.설치 방법은 아래 페이지에서 확인할 수 있다. https://min.io/docs/minio/linux/reference/minio-mc.html MinIO Client — MinIO Object Storage for LinuxThe following commands ad
cow-kite24.tistory.com
위 두 개의 포스팅에 이어서, Minio에서 데이터를 불러와 GCN 모델을 학습하고, 학습 과정을 mlflow로 기록하는 실습을 해보자.
두 번째 포스팅인 "Minio Client 설치 및 데이터업로드"에서 미리 Cora dataset을 minio의 raw-data 버킷에 업로드했다.
▶ 변수 설정
데이터를 다운로드 받기에 앞서 먼저 minio 정보를 변수로 선언해야한다.
MinIO에 업로드한 데이터 디렉토리에서 사용할 데이터 파일은 OBJECT_NAME 변수로 선언했다.
모델을 학습할 때 사용하는 데이터는 Cora/Processed/data.pt 파일이다.
MINIO_URL = "0.0.0.0:9000"
ACCESS_KEY = "minioadmin"
SECRET_KEY = "minioadmin"
BUCKET_NAME = "raw-data"
FORDER_NAME = "Cora"
OBJECT_NAME = "Cora/processed/data.pt"
▶ 데이터 다운로드
Minio의 raw-data 버킷에 업로드한 Cora 디렉토리의 모든 파일을 다운로드 받는 코드이다.
사실 data.pt만 다운로드 받아도 모델 학습에는 문제가 없다.
앞서 설정한 변수들로 MinIO Client를 선언하고 데이터를 다운로드 한다.
def download_data():
client = Minio(MINIO_URL, access_key=ACCESS_KEY, secret_key=SECRET_KEY, secure=False)
# 버킷의 모든 object 다운로드
objects = client.list_objects(BUCKET_NAME, prefix=FORDER_NAME, recursive=True)
for obj in objects:
local_file_path = os.path.join("./", obj.object_name)
os.makedirs(os.path.dirname(local_file_path), exist_ok=True)
client.fget_object(BUCKET_NAME, obj.object_name, local_file_path)
print(f"Downloaded: {obj.object_name} -> {local_file_path}")
▶ 다운받은 데이터 로드
다운로드 받은 object들 중 학습에 사용할 data.pt파일을 load하고 모델 학습에 사용할 수 있게 Data 객체로 전처리한다.
def load_data():
data_path = "./Cora/processed/data.pt"
if not os.path.exists(data_path):
raise FileNotFoundError(f"Data does not exists: {data_path}")
data = torch.load(data_path, weights_only=True)
print(f"Loaded data type: {type(data)}")
if isinstance(data, tuple):
data = data[0]
if isinstance(data, dict):
data = Data(**data)
print('Data load complete')
return data
▶ 데이터 정보 기록
train하는 함수에서 데이터의 정보 (bucket, object name)을 기록한다.
minio의 버저닝 기능을 사용하면 데이터의 버전도 기록할 수 있지만, 일단 이름만 기록한다.
def train_node_classifier(model, graph, optimizer, criterion, n_epochs=200):
with mlflow.start_run(run_name=RUN_NAME, nested=True):
mlflow.log_param("bucket_name", BUCKET_NAME)
mlflow.log_param("object_name", OBJECT_NAME)
mlflow.log_param("epochs", n_epochs)
mlflow.log_param("learning_rate", optimizer.param_groups[0]['lr'])
mlflow.log_param("weight_decay", optimizer.param_groups[0]['weight_decay'])
▶ 모델 학습 정보 확인
minio를 모델 학습에 사용하기 위해 크게 변화된 부분은 위에 수정한 부분들이다.
이 외에도 자잘하게 변화된 코드들이 있는데, 전체 코드는 아래 github에서 확인할 수 있다.
https://github.com/Cow-Kite/MLOps_Practice/blob/main/Study/minio_gcn.py
MLOps_Practice/Study/minio_gcn.py at main · Cow-Kite/MLOps_Practice
Contribute to Cow-Kite/MLOps_Practice development by creating an account on GitHub.
github.com
코드를 실행하고, mlflow web에서 기록을 확인해보면 minio에서 다운로드 받고 로드한 데이터로 모델 학습을 수행한 것을 확인할 수 있다.
'취업 > 프로젝트' 카테고리의 다른 글
MLflow의 Backend Store로 PostgreSQL 활용하기 / 2025.02.09 (0) | 2025.02.09 |
---|---|
MinIO Client 설치 및 데이터 업로드 / 25.02.05 (0) | 2025.02.05 |
MLflow를 활용한 GCN 모델 예제 / 25.02.04 (0) | 2025.02.05 |
MinIO 설치하기 / 25.02.04 (0) | 2025.02.04 |
MLflow, PostgreSQL, Airflow 설치하기 / 2025.02.03 (0) | 2025.02.03 |