이 영역을 누르면 첫 페이지로 이동
butter_shower 블로그의 첫 페이지로 이동

butter_shower

페이지 맨 위로 올라가기

butter_shower

Ray와 Ray를 이용한 ML모델 학습 예시

  • 2024.02.15 00:55
  • 머신러닝 꿈나무
글 작성자: _rian

https://www.ray.io/

 

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 5주차

    [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 5주차

    2024.02.05
  • [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 4주차

    [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 4주차

    2024.01.29
  • [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차

    [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 3주차

    2024.01.21
  • [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차

    [혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 2주차

    2024.01.14
다른 글 더 둘러보기

정보

butter_shower 블로그의 첫 페이지로 이동

butter_shower

  • butter_shower의 첫 페이지로 이동

검색

메뉴

  • All Categories
  • About Me
  • Guest Book

카테고리

  • 전체보기 (223)
    • 💫 주인장 이야기 (17)
    • 🌱 와글와글뻘글 (27)
    • IT Trends (11)
    • 주인장 일상 (0)
    • 📒 내 마음대로 독서 서평 (12)
    • 머신러닝 꿈나무 (30)
      • 기본 개념 (6)
      • Hands-on! (5)
      • Paper Review (5)
      • 캐린이의 Kaggle (1)
    • 알고리즘 Algorithm (33)
      • PS (8)
    • Computer Engineering (75)
      • Python (8)
      • Cloud Computing (9)
      • C (9)
      • C++ (0)
      • Java (6)
      • Django 장고 (4)
      • 임베디드 시스템 (10)
      • 병렬 처리(Parallel Processing) (9)
      • 데이터 통신 Data communication (4)
      • 유닉스 시스템 (Unix System) (3)
      • GitHub (1)
      • 마이크로 프로세서 (micro processor) (1)
      • 데이터 마이닝 (1)
    • Error Note 🚨 (3)
    • 영어 공부 (6)
      • Live Academy (6)
    • HOBBY (2)
      • Film Log (2)

최근 글

정보

_rian의 butter_shower

butter_shower

_rian

나의 외부 링크

  • Github
  • Facebook
  • Instagram
  • LinkedIn
  • Twitter

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / AXZ. © _rian. Designed by Fraccino.

티스토리툴바