[파이썬] xgboost 도커 및 클라우드 통합

XGBoost Logo

소개

XGBoost는 대표적인 머신러닝 알고리즘 중 하나로, 특히 그래디언트 부스팅에 기반한 알고리즘입니다. 이번 블로그 포스트에서는 XGBoost 모델을 도커 컨테이너에 패키징하고, 클라우드 서비스에 배포하는 방법에 대해 알아보겠습니다.

도커로 XGBoost 모델 패키징하기

XGBoost 모델을 도커 컨테이너로 패키징하면 모델을 쉽게 배포하고 실행할 수 있습니다. 다음은 도커 컨테이너에 XGBoost 모델을 패키징하는 간단한 예제 코드입니다.

import xgboost as xgb

# XGBoost 모델 훈련하기
bst = xgb.train(params, dtrain)

# 모델 저장하기
bst.save_model("model.xgb")

# Dockerfile 생성하기
with open("Dockerfile", "w") as f:
    f.write("FROM python:3.8\n")
    f.write("RUN pip install xgboost\n")
    f.write("COPY model.xgb /app/\n")
    f.write("COPY my_script.py /app/\n")
    f.write("WORKDIR /app/\n")
    f.write("CMD python my_script.py")

위의 예제 코드에서는 xgboost를 사용하여 모델을 훈련하고 저장한 후, Dockerfile을 생성합니다. Dockerfile은 공식 Python 3.8 이미지를 기반으로하여 xgboost 패키지를 설치하고, 모델 파일과 실행 스크립트를 컨테이너 내로 복사하는 역할을 합니다.

클라우드에 XGBoost 모델 배포하기

도커로 패키징한 XGBoost 모델을 클라우드 서비스에 배포하여 원격으로 실행할 수 있습니다. 다음은 AWS EC2 인스턴스에 XGBoost 모델을 배포하는 예제 코드입니다.

import boto3

# EC2 인스턴스 생성하기
ec2 = boto3.resource('ec2')
instance = ec2.create_instances(
    ImageId='ami-12345678',
    InstanceType='t2.micro',
    MinCount=1,
    MaxCount=1,
    KeyName='my-keypair',
)

# 모델 파일 전송하기
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
bucket.upload_file('model.xgb', 'model.xgb')

# 실행 스크립트 업로드하기
bucket.upload_file('my_script.py', 'my_script.py')

# 인스턴스 실행하기
instance[0].start()

위의 예제 코드에서는 AWS SDK인 boto3를 사용하여 EC2 인스턴스를 생성하고, 모델 파일과 실행 스크립트를 S3 버킷에 업로드합니다. 그 후, EC2 인스턴스를 실행하여 XGBoost 모델을 원격으로 실행할 수 있습니다.

마무리

이번 포스트에서는 XGBoost 모델을 도커 컨테이너에 패키징하고, 클라우드 서비스에 배포하는 방법에 대해 알아보았습니다. 도커를 사용하여 모델을 패키징하면 배포와 관리가 용이해지며, 클라우드 서비스를 통해 원격으로 모델을 실행할 수 있습니다. 이러한 방법을 활용하여 XGBoost와 같은 머신러닝 모델을 효과적으로 활용할 수 있습니다.

참고 자료: