[Ray] 분산 실행 프레임워크 Ray 설명
·
💻 Programming/Distributed Computing
RayRay는 범용 분산 실행 프레임워크이다. 기존의 분산 시스템은 ETL, 학습, 서빙처럼 목적에 따라 서로 다른 도구를 사용해야 했다. 하지만 Ray는 단일 프레임워크 안에서 데이터 전처리(Ray Data), 분산 학습(Ray Train), 하이퍼파라미터 최적화(Ray Tune), 모델 서빙(Ray Serve)를 모두 지원한다. Ray는 Uber에서 내부 분산 강화학습 플랫폼으로 시작했으며, 현재는 다양한 기업에서 대규모 ML 학습, 서빙, 실험 자동화에 활용되고 있다. 특히 GPU 스케줄링과 동적 리소스 관리 기능이 뛰어나, 수십~수백 개의 노드와 GPU를 다루는 환경에서 많이 쓰인다.1. Ray Core 개념1.1 TaskRay에서 Task는 분산 실행의 기본 단위이다. Python 함수에 @r..
[PySpark] Spark Job 실행 가이드: Ad-hoc vs Batch
·
💻 Programming/Distributed Computing
1. Spark Job의 개념Spark에서 Action 연산(collect(), count(), saveAsTable() 등)이 호출되면 내부적으로 Job이 생성된다. Job은 DAG(Directed Acyclic Graph)로 쪼개져 Stage와 Task로 나뉘어 클러스터의 Executor에서 병렬 실행된다. 즉, Job은 Spark 클러스터에 제출되어 실행되는 단위 작업이다. 주피터 노트북 환경에서 PySpark로 코드를 작성하고 실행하는 경우에도 마찬가지로 Spark Job이 실행된다. 노트북 서버는 단순히 드라이버(Driver) 역할을 하며, 실제 데이터 처리는 클러스터의 Executor에서 수행된다. 따라서 사용자는 노트북에서 코드를 실행하는 것처럼 보이지만, 내부적으로는 동일하게 Spark ..
[PySpark] 주요 연산 가이드: Transformation, Action
·
💻 Programming/Distributed Computing
1. 개요PySpark의 연산은 크게 Transformation과 Action으로 구분된다. 이 구분을 이해하면 “어디서 성능 비용이 발생하는지, 어떤 코드가 실제 실행을 트리거하는지”를 명확히 알 수 있어 전처리와 학습 데이터 준비 단계에서 시행착오를 줄일 수 있다. 2. Transformation vs Action2.1 정의Transformation: 새로운 DataFrame을 반환하지만 즉시 실행되지 않는다(=lazy). Spark는 lineage(연산 이력)만 쌓는다.Action: Spark가 실제 Job을 실행하여 결과를 반환하거나 외부 저장소에 기록한다.2.2 실행 모델 요약Action을 만나기 전까지는 Job이 생성되지 않는다.Action을 호출하는 순간 DAG가 Job → Stage(셔플..
[PySpark] 성능 최적화 기본기: 대규모 데이터 처리를 위해
·
💻 Programming/Distributed Computing
1. 개요PySpark는 대규모 데이터를 효율적으로 처리할 수 있지만, 무심코 작성한 코드가 성능 병목을 일으키는 경우가 많다. ML 엔지니어 입장에서는 Spark 내부 엔진을 깊이 알 필요는 없지만, 기본적인 최적화 원리와 실무 패턴을 이해하면 전처리와 학습 데이터 준비에서 큰 시간을 절약할 수 있다. 이 글에서는 PySpark 최적화의 기본기를 정리한다. 2. Lazy Evaluation과 캐시 활용PySpark는 Lazy evaluation 방식을 사용한다. Transformation은 즉시 실행되지 않고 lineage로만 기록되며, Action이 호출될 때 실제 Job이 실행된다.Action(count(), collect(), write() 등)을 여러 번 호출하면 동일 연산이 반복 실행될 수 있..
[PySpark] 어디에, 왜 쓸까? | 대용량 데이터 전처리와 ML 활용 가이드
·
💻 Programming/Distributed Computing
1. 개요PySpark는 Apache Spark의 Python API이며, 대규모 데이터를 분산 환경에서 처리하기 위한 표준 도구이다. ML 리서치 엔지니어에게 PySpark는 판다스와 유사한 문법을 유지하면서도 클러스터 전체 자원을 활용해 확장된 처리를 가능하게 하는 점에서 유용하다. 이 글에서는 PySpark를 어디에, 왜 사용하는지, 그리고 실무자가 어떤 부분을 중점적으로 이해해야 하는지 설명한다. 2. PySpark는 어디에 쓰는가PySpark는 데이터 엔지니어뿐만 아니라 ML 엔지니어에게도 데이터 준비와 전처리에 핵심 도구로 활용된다. 특히 대용량 데이터셋을 다룰 때 Pandas로는 처리하기 어려운 경우가 많아 PySpark가 필요하다. 데이터 분석과 ML 실험을 위해서는 빠르게 데이터를 가공하..
[PySpark] 자주 쓰는 기능 메서드 정리
·
💻 Programming/Distributed Computing
PySpark는 대용량 데이터를 다룰 때 효과적인 분산 처리 프레임워크이다. 이 글에서는 JSON 데이터 처리와 관련된 PySpark의 자주 쓰는 기능과 메서드를 중심으로 실무에서 어떻게 활용할 수 있는지 정리한다.PySpark는 왜 SQL이 아닌 함수형 처리 방식으로 사용하나?PySpark에서는 SQL처럼 한 줄로 복잡한 쿼리를 작성하는 대신, 테이블을 불러와 단계적으로 처리하는 방식이 일반적이다. 이런 방식은...복잡한 로직을 분리해서 디버깅이 용이하다.컬럼 단위 조작이 자유롭고, 재사용성이 높다.중간 단계의 데이터를 쉽게 확인하고 튜닝할 수 있다.와 같은 장점이 있다고 한다.따라서 실무에서는 SQL 쿼리 하나로 모든 작업을 끝내기보다는, 아래와 같이 단계별 처리 방식으로 작성하는 코드 스타일이 더 ..