Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 토끼
- Compute
- 모험
- 반복문
- Docker
- Redshift
- 인자 힌트
- Ai
- 프롬프트 튜닝
- Python
- 아기동화
- 파라미터 힌트
- AI 동화
- 검색
- 컨텍스트 매니져
- 퓨샷
- dask
- FOR
- 도커
- 동화책
- Cognitive Search
- 조건문
- 인컨텍스트 러닝
- 파이썬
- 대스크
- GPT
- 제로샷
- Cognitive Service
- Azure
- UDF
Archives
- Today
- Total
호랭이 분석가
Dask #3. 대스크 compute()와 persist() 본문
반응형
1. 복잡한 DAG 생성
실무에서 사용하는 복잡한 로직과 비교할 수 없지만
compute()와 persist()를 비교하기 위해서 복잡한 DAG를 생성합니다.
import dask.delayed as delayed
from dask.diagnostics import ProgressBar
def add_two(x) :
return x + 2
def sum_two_numbers(x, y) :
return x + y
def multiply_four(x) :
return x * 4
data = [1, 5, 8, 10]
step1 = [delayed(add_two)(i) for i in data]
step2 = [delayed(multiply_four)(j) for j in step1]
total = delayed(sum)(step2)
total.visualize()
단순한 덧셈 연산에 곱하기 연산을 추가한 DAG를 생성하고도 아직 단순한 것 같습니다.
위에서 생성한 DAG에 다른 계층을 추가해 보겠습니다.
data2 = [delayed(sum_two_numbers)(k, total) for k in data]
total2 = delayed(sum)(data2)
total2.visualize()
조금은 더 복잡한 DAG가 완성되었습니다.
대스크는 이러한 연산의 흐름을 생성하고 저장합니다. 다만 아직 연산이 시작된 것은 아닙니다.
이제 생성된 DAG로 compute와 persist를 비교해 보도록 하겠습니다.
2. compute() vs persist()
위에서 생성된 total2를 통해 compute() 메서드로 연산을 진행합니다.
with ProgressBar() :
print(total2.compute())
total2.visualize()
compute()를 사용하면 536의 연산 결과를 도출합니다. 하지만 DAG는 유지가 됩니다.
지연 객체에서 compute 메서드를 호출할 때마다 536이라는 결과를 도출하기 위해서 전체 DAG를 단계적으로 실행합니다.
만약에 실무에서 반복해서 사용되는 결과라고 가정했을 때, 해당 연산을 계속해서 반복하게 됩니다.
이를 효율적으로 사용하기 위해서 persist를 사용합니다.
with ProgressBar() :
persisted_data = total2.persist()
print(persisted_data)
persisted_data.visualize()
위 코드처럼 persist 메서드를 사용하면 결과를 도출하지는 않지만 지연 객체를 생성하는데, DAG가 단일 결과를 얻었습니다.
자주 사용하게 되는 연산이라면 이처럼 중간 결과를 유지하는(persist)것이 효율적일 것입니다.
data3 = [delayed(sum_two_numbers)(l, persisted_data) for l in data]
total3 = delayed(sum)(data3)
total3.visualize()
자주 사용되는 로직을 중간 저장 후에 위 코드처럼 새로운 DAG를 추가할 수 있습니다.
'Python > Dask' 카테고리의 다른 글
Dask #4. 대스크 Dataframe과 keras(기초) (0) | 2022.05.10 |
---|---|
Dask #2. 대스크 Redshift 및 DB, S3, HDFS, parquet, csv 데이터 불러오기 (0) | 2022.04.12 |
Dask #1. 대스크 Delayed 를 사용한 병렬화와 visualize, compute (0) | 2022.04.10 |
Dask #0. 대스크 시작하기 (0) | 2022.04.07 |
Comments