Ray와 Ray를 이용한 ML모델 학습 예시
글 작성자: _rian
Productionizing and scaling Python ML workloads simply | Ray
Scale your compute-intensive Python workloads. From reinforcement learning to large-scale model serving, Ray makes the power of distributed compute easy and accessible to every engineer.
www.ray.io
Ray란?
- 오픈소스 분산 컴퓨팅 프레임워크. Python 기반으로 간단하면서도 강력한 API를 제공하고 있다. (한마디로, 편하다!)
- 기계학습, 강화학습 등의 컴퓨팅 작업도 수월하게 처리 가능함.
- 핵심 기능
- 간편한 병렬화 : Python 함수를 쉽게 병렬 작업으로 전환 가능
- 분산 객체 저장소 : 대규모 데이터 세트를 여러 노드에 걸쳐 효율적으로 공유
- 확장성 : 단일 노드에서 작업을 시작하여 클러스터로 쉽게 확장
- 결함 허용 : 시스템 일부가 실패해도 작업이 계속됨
Ray의 구성 요소
- Task (Remote Function)
- 분산처리를 실행하는 "함수"
- 함수를
@ray.remote
로 감싸며 어노테이션을 해준다. - 해당 함수를 호출하게 될 경우 task가 비동기(asynchoronously)하게 실행됨 (동기식이 아님)
task_func.remote()
를 호출하면 Future 객체로 반환되며,ray.get(future)
를 할 경우 task가 실행됨
- Actor
@ray.remote
로 감싼 함수가 호출된 이후 파이썬 클래스의 인스턴스
- Driver
- 프로그램이 돌아가는 메인 root 환경 (spark에서 driver와 비슷한 개념)
ray.init()
을 호출하면 실행됨.
- 그 외 Object, Job 등이 있지만 이정도만 알아도 개발을 하는 단계에서는 충분하다
Ray를 활용한 예시 코드
# 라이브러리 import
import ray
# 강화학습 예시 - 사전 정의한 agent, env 코드 및 함수
from dqn_agent import DQNAgent
from dqn_env import DQNEnv
from dqn_func import train_dqn, save_model
# Ray 초기화
ray.init()
# DQN 학습을 위한 Ray 원격 함수 정의
@ray.remote
def train_and_save_model(ctlg_no, data, state_size, n_action, model_id):
agent = DQNAgent(state_size, n_action)
env = DQNEnv(data)
train_dqn(agent, env)
save_model(agent, env, ctlg_no)
return agent, env
# 데이터 준비
data_list = [prepare_data(i) for i in range(1000)]
# 각 학습을 병렬로 실행
futures = [train_and_save_model.remote(ctlg_no, data, state_size, n_action, i) for i, data in enumerate(data_list)]
# 모든 작업이 완료될때까지 기다림
result_agent, result_env = ray.get(futures)
# Ray 종료
ray.shutdown()
'머신러닝 꿈나무' 카테고리의 다른 글
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 5주차 (1) | 2024.02.05 |
---|---|
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 4주차 (0) | 2024.01.29 |
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차 (1) | 2024.01.21 |
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차 (1) | 2024.01.14 |
강화학습이란? 심층 강화학습에 대한 정의와 종류 (1) | 2024.01.05 |
댓글
이 글 공유하기
다른 글
-
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 5주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 5주차
2024.02.05 -
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 4주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 4주차
2024.01.29 -
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차
2024.01.21 -
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차
2024.01.14