광선 또는 다스크? 데이터 과학자를위한 실용 가이드

광선 또는 다스크? 데이터 과학자를위한 실용 가이드

광선 또는 다스크? 데이터 과학자를위한 실용 가이드광선 또는 다스크? 데이터 과학자를위한 실용 가이드
저자의 이미지 | 표의 문자

데이터 과학자로서 우리는 실행하는 데 상당한 시간이 필요한 대형 데이터 세트 또는 복잡한 모델을 처리합니다. 시간을 절약하고 결과를 더 빨리 달성하기 위해 작업을 동시에 또는 여러 시스템에서 실행하는 도구를 사용합니다. 이를 위해 두 개의 인기있는 파이썬 라이브러리가 있습니다 레이 그리고 다스크. 둘 다 데이터 처리 및 모델 교육 속도를 높이는 데 도움이되지만 다양한 유형의 작업에 사용됩니다.

이 기사에서는 Ray와 Dask가 무엇이며 언제 각각을 선택 해야하는지 설명 할 것입니다.

Dask와 Ray는 무엇입니까?

Dask는 다량의 데이터를 처리하는 데 사용되는 라이브러리입니다. 사용자에게 친숙한 방식으로 작동하도록 설계되었습니다. 팬더,,, Numpy또는 Scikit-Learn. Dask는 데이터와 작업을 작은 부품으로 나누고 병렬로 실행합니다. 이를 통해 많은 새로운 개념을 배우지 않고 데이터 분석을 확장하려는 데이터 과학자에게 완벽합니다.

Ray는 분산 응용 프로그램을 구축하고 실행하는 데 도움이되는보다 일반적인 도구입니다. 기계 학습 및 AI 작업에서 특히 강력합니다.

Ray는 또한 다음과 같이 구축 된 추가 라이브러리가 있습니다.

  • 레이 튜닝 머신 러닝에서 하이퍼 파라미터를 조정합니다
  • 레이 트레인 다중 GPU의 교육 모델 용
  • 레이 서빙 웹 서비스로 모델을 배포합니다

확장 가능한 머신 러닝 파이프 라인을 구축하거나 복잡한 작업을 병렬로 실행 해야하는 AI 애플리케이션을 배포하려는 경우 Ray는 좋습니다.

기능 비교

핵심 속성에 기초한 Dask 및 Ray의 구조화 된 비교 :

특징 다스크 레이
1 차 추상화 데이터 프레임, 어레이, 지연 작업 원격 기능, 배우
가장 좋습니다 확장 가능한 데이터 처리, 기계 학습 파이프 라인 분산 기계 학습 교육, 튜닝 및 서빙
사용 편의성 팬더/Numpy 사용자의 경우 높습니다 보통, 더 많은 보일러 플레이트
생태계 통합 scikit-learn,,, xgboost 내장 라이브러리 : 곡조,,, 제공하다,,, rllib
확장 성 배치 처리에 아주 좋습니다 우수하고 더 많은 제어력과 유연성
일정 작업 스케일러 역동적 인 액터 기반 스케줄러
클러스터 관리 기본 또는 Kubernetes, 원사를 통해 Ray Dashboard, Kubernetes, AWS, GCP
공동체/성숙 나이가 많고 성숙하며 널리 채택되었습니다 빠르고 강력한 기계 학습 지원 성장

언제 무엇을 사용해야합니까?

당신이 있다면 Dask를 선택하십시오 :

  • 사용 Pandas/NumPy 확장 성을 원합니다
  • 프로세스 테이블 또는 어레이와 같은 데이터
  • 배치 ETL 또는 기능 엔지니어링을 수행하십시오
  • 필요 dataframe 또는 array 게으른 실행으로 추상화

당신이 있다면 Ray를 선택하십시오 :

  • 많은 독립적 인 Python 함수를 동시에 실행해야합니다
  • 머신 러닝 파이프 라인을 구축하거나, 모델을 제공하거나, 장기 실행 작업을 관리하고 싶습니다.
  • 상태가 높은 작업으로 마이크로 서비스와 같은 스케일링이 필요합니다

생태계 도구

두 라이브러리는 데이터 과학 수명주기를 다루기위한 다양한 도구를 제공하거나 지원하지만 다른 강조를 제공합니다.

다스크 레이
데이터 프레임 dask.dataframe 모딘 (광선 또는 Dask에 건축)
배열 dask.array 기본 지원은 없으며 Numpy에 의존합니다
하이퍼 파라미터 튜닝 수동 또는 Dask-ML 레이 튜닝 (고급 기능)
기계 학습 파이프 라인 dask-ml맞춤형 워크 플로 레이 트레인,,, 레이 튜닝,,, 레이 에어
모델 서빙 맞춤형 플라스크/Fastapi 설정 레이 서빙
강화 학습 지원되지 않습니다 rllib
계기반 내장, 매우 상세합니다 내장, 단순화

실제 시나리오

// 대규모 데이터 청소 및 기능 엔지니어링

사용 다스크.

왜? Dask는 부드럽게 통합됩니다 pandas 그리고 NumPy. 많은 데이터 팀이 이미 이러한 도구를 사용하고 있습니다. 데이터 세트가 메모리에 너무 커지면 Dask가 더 작은 부품으로 분할되어 이러한 부품을 병렬로 처리 할 수 ​​있습니다. 이는 데이터 청소 및 새로운 기능 생성과 같은 작업에 도움이됩니다.

예:

import dask.dataframe as dd
import numpy as np

df = dd.read_csv('s3://data/large-dataset-*.csv')
df = df[df['amount'] > 100]
df['log_amount'] = df['amount'].map_partitions(np.log)
df.to_parquet('s3://processed/output/')

이 코드는 Dask를 병렬로 사용하여 S3 버킷에서 여러 대형 CSV 파일을 읽습니다. 금속이 100보다 큰 행을 필터링하고 로그 변환을 적용하며 결과를 파크 파일로 저장합니다.

// 머신 러닝 모델을위한 병렬 하이퍼 파라미터 튜닝

사용 레이.

왜? 레이 튜닝 기계 학습 모델을 교육 할 때 다른 설정을 시도하는 데 좋습니다. 그것은 같은 도구와 통합됩니다 피해자 그리고 XGBoost그리고 시간을 절약하기 위해 나쁜 달리기를 일찍 멈출 수 있습니다.

예:

from ray import tune
from ray.tune.schedulers import ASHAScheduler

def train_fn(config):
    # Model training logic here
    ...

tune.run(
    train_fn,
    config={"lr": tune.grid_search([0.01, 0.001, 0.0001])},
    scheduler=ASHAScheduler(metric="accuracy", mode="max")
)

이 코드는 교육 기능을 정의하고 Ray Tune을 사용하여 다른 학습 속도를 병렬로 테스트합니다. ASHA 스케줄러를 사용하여 최상의 구성을 자동으로 예약하고 평가합니다.

// 분산 배열 계산

사용 다스크.

왜? 도스크 어레이는 큰 숫자 세트로 작업 할 때 도움이됩니다. 배열을 블록으로 나누고 병렬로 처리합니다.

예:

import dask.array as da

x = da.random.random((10000, 10000), chunks=(1000, 1000))
y = x.mean(axis=0).compute()

이 코드는 병렬로 처리 할 수있는 덩어리로 나뉘어져있는 큰 랜덤 어레이를 생성합니다. 그런 다음 Dask의 병렬 컴퓨팅 파워를 사용하여 각 열의 평균을 계산합니다.

// 엔드 투 엔드 머신 러닝 서비스 구축

사용 레이.

왜? Ray는 모델 교육뿐만 아니라 서빙 및 수명주기 관리를 위해 설계되었습니다. 와 함께 레이 서빙생산에 모델을 배치하고, 전처리 로직을 동시에 실행하고, 상태가 많은 액터를 확장 할 수 있습니다.

예:

from ray import serve

@serve.deployment
class ModelDeployment:
    def __init__(self):
        self.model = load_model()

    def __call__(self, request_body):
        data = request_body
        return self.model.predict([data])[0]

serve.run(ModelDeployment.bind())

이 코드는 기계 학습 모델을로드하여 Ray Serv를 사용하여 API를 통해 제공하는 클래스를 정의합니다. 클래스는 요청을 받고 모델을 사용하여 예측하고 결과를 반환합니다.

최종 권장 사항

유스 케이스 권장 도구
확장 가능한 데이터 분석 (팬더 스타일) 다스크
대규모 기계 학습 교육 레이
하이퍼 파라미터 최적화 레이
코어 외 데이터 프레임 계산 다스크
실시간 머신 러닝 모델 서빙 레이
높은 평행을 가진 맞춤형 파이프 라인 레이
Pydata 스택과 통합 다스크

결론

Ray와 Dask는 데이터 과학자가 다량의 데이터를 처리하고 프로그램을 더 빨리 처리하는 데 도움이되는 도구입니다. Ray는 기계 학습 프로젝트와 같이 많은 유연성이 필요한 작업에 적합합니다. Dask는 다음과 유사한 도구를 사용하여 큰 데이터 세트로 작업하려면 유용합니다. Pandas 또는 NumPy.

선택한 사람은 프로젝트가 필요한 것과 가지고있는 데이터 유형에 따라 다릅니다. 작은 예제에서 두 가지 예제가 더 잘 맞는지보기 위해 두 가지를 모두 시도하는 것이 좋습니다.

Jayita Gulati 기계 학습 애호가이자 기계 학습 모델 구축에 대한 열정으로 인해 기계 학습 애호가이자 기술 작가입니다. 그녀는 리버풀 대학교에서 컴퓨터 과학 석사 학위를 취득했습니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다