Fabric의 Apache Spark 구성에 대한 autotune이란?
Autotune은 Apache Spark 구성을 자동으로 조정하여 워크로드 실행 속도를 향상시키고 전반적인 성능을 최적화합니다. Autotune은 광범위한 노력, 리소스, 시간 및 실험이 필요한 수동 튜닝에 비해 시간과 리소스를 절약합니다. Autotune은 워크로드의 기록 실행 데이터를 사용하여 특정 워크로드에 대해 가장 효과적인 구성을 반복적으로 검색하고 적용합니다.
참고 항목
Microsoft Fabric의 autotune 쿼리 튜닝 기능은 현재 프리뷰로 제공됩니다. Autotune은 모든 프로덕션 하위 지역에서 사용할 수 있지만 기본적으로 사용하지 않도록 설정됩니다. Spark Notebook 또는 Spark 작업 정의 코드에 해당 Spark 설정을 포함하여 환경 내 또는 단일 세션 내에서 Spark 구성 설정을 통해 활성화할 수 있습니다.
쿼리 튜닝
Autotune은 각 쿼리에 대해 세 가지 Apache Spark 설정을 별도로 구성합니다.
spark.sql.shuffle.partitions
- 조인 또는 집계 중 데이터 랜덤 보기를 위한 파티션 수를 설정합니다. 기본값은 200입니다.spark.sql.autoBroadcastJoinThreshold
- 조인 작업이 실행될 때 모든 작업자 노드에 브로드캐스트되는 최대 테이블 크기(바이트)를 설정합니다. 기본값은 10MB입니다.spark.sql.files.maxPartitionBytes
- 파일을 읽을 때 단일 파티션으로 압축할 최대 바이트 수를 정의합니다. Parquet, JSON 및 ORC 파일 기반 소스에 대해 작동합니다. 기본값은 128MB입니다.
팁
Autotune 쿼리 튜닝은 개별 쿼리를 검사하고 각 쿼리에 대해 고유한 ML 모델을 빌드합니다. 특히 다음을 대상으로 합니다.
- 반복 쿼리
- 장기 실행 쿼리(실행 시간이 15초 이상인 쿼리)
- Apache Spark SQL API 쿼리(매우 드물지만 RDD API로 작성된 쿼리 제외) 언어(Scala, PySpark, R, Spark SQL)에 관계없이 모든 쿼리를 최적화합니다.
이 기능은 Notebook, Apache Spark 작업 정의 및 파이프라인과 호환됩니다. 이점은 쿼리의 복잡성, 사용된 메서드 및 구조에 따라 달라집니다. 광범위한 테스트를 통해 데이터 읽기, 조인 실행, 집계 및 정렬과 같은 예비 데이터 분석과 관련된 쿼리를 통해 가장 큰 장점이 실현되는 것으로 나타났습니다.
Autotune을 뒷받침하는 AI 기반 직관
autotune 기능은 반복 프로세스를 활용하여 쿼리 성능을 최적화합니다. 기본 구성으로 시작하고 기계 학습 모델을 사용하여 효율성을 평가합니다. 사용자가 쿼리를 제출하면 시스템은 이전 상호 작용을 기반으로 저장된 모델을 검색합니다. 중심이이라는 기본 설정을 중심으로 잠재적 구성을 생성합니다. 모델에서 예측하는 최상의 후보가 적용됩니다. 쿼리 실행 후 성능 데이터가 다시 시스템으로 전송되어 모델을 구체화합니다.
피드백 루프는 점차 중심을 최적의 설정으로 이동합니다. 회귀 위험을 최소화하면서 시간이 지남에 따라 성능을 개선합니다. 사용자 쿼리를 기반으로 하는 지속적인 업데이트를 통해 성능 벤치마크를 구체화할 수 있습니다. 또한 이 프로세스는 중심 구성을 업데이트하여 모델이 보다 효율적인 설정으로 증분적으로 이동하도록 합니다. 이는 과거의 성과를 평가하고 이를 사용하여 향후 조정을 안내함으로써 달성됩니다. 모든 데이터 요소를 사용하여 변칙의 영향을 완화합니다.
책임 있는 AI 관점에서 Autotune 기능에는 데이터 사용량 및 이점에 대한 정보를 제공하도록 설계된 투명성 메커니즘이 포함되어 있습니다. 보안 및 개인 정보 보호는 Microsoft의 표준에 부합합니다. 지속적인 모니터링은 출시 후 성능 및 시스템 무결성을 유지합니다.
autotune 사용
Autotune은 모든 프로덕션 하위 지역에서 사용할 수 있지만 기본적으로 사용하지 않도록 설정됩니다. 환경 내에서 Spark 구성 설정을 통해 활성화할 수 있습니다. Autotune을 사용하도록 설정하려면 새 환경을 만들거나 기존 환경의 경우 아래 스크린샷과 같이 Spark 속성 'spark.ms.autotune.enabled = true'를 설정합니다. 그런 다음 이 설정은 해당 환경에서 실행되는 모든 Notebook 및 작업에서 상속되어 자동으로 튜닝됩니다.
Autotune에는 성능을 모니터링하고 성능 회귀를 감지하기 위한 기본 제공 메커니즘이 포함되어 있습니다. 예를 들어 쿼리가 비정상적으로 많은 양의 데이터를 처리하는 경우 Autotune은 자동으로 비활성화됩니다. 일반적으로 최적의 구성을 학습하고 식별하려면 20~25회의 반복이 필요합니다.
참고 항목
Autotune은 Fabric Runtime 1.1 및 Runtime 1.2와 호환됩니다. 높은 동시성 모드에서 또는 프라이빗 엔드포인트가 사용하도록 설정된 경우 Autotune이 작동하지 않습니다. 그러나 autotune은 구성에 관계없이 자동 크기 조정과 원활하게 통합됩니다.
Spark Notebook 또는 Spark 작업 정의 코드에 해당 Spark 설정을 포함하여 단일 세션 내에서 autotune을 사용하도록 설정할 수 있습니다.
%%sql
SET spark.ms.autotune.enabled=TRUE
각 Spark Notebook 또는 Spark 작업 정의 코드에 대한 Spark 설정을 통해 Autotune을 제어할 수 있습니다. Autotune을 사용하지 않도록 설정하려면 다음 명령을 첫 번째 셀(Notebook) 또는 코드 줄(SJD)로 실행합니다.
%%sql
SET spark.ms.autotune.enabled=FALSE
사례 연구
Apache Spark 쿼리를 실행할 때 autotune은 쿼리 실행 최적화를 전담하는 사용자 지정된 ML 모델을 만듭니다. 쿼리 패턴 및 리소스 요구 사항을 분석합니다. 국가와 같은 구체적인 특성에 따라 데이터 세트를 필터링하는 초기 쿼리를 고려합니다. 이 예제에서는 지리적 필터링을 사용하지만 이 원칙은 쿼리 내의 모든 특성 또는 작업에 보편적으로 적용됩니다.
%%pyspark
df.filter(df.country == "country-A")
Autotune은 이 쿼리에서 학습하여 후속 실행을 최적화합니다. 예를 들어 필터 값을 변경하거나 다른 데이터 변환을 적용하여 쿼리가 변경되는 경우 일반적으로 쿼리의 구조적 본질은 일관성을 유지합니다.
%%pyspark
df.filter(df.country == "country-B")
변경에도 불구하고 autotune은 새 쿼리의 기본 구조를 식별하여 이전에 학습한 최적화를 구현합니다. 이 기능은 각 새 쿼리 반복에 대해 수동으로 재구성할 필요 없이 높은 효율성을 유지합니다.
로그
각 쿼리에 대해 autotune은 세 가지 Spark 구성에 가장 적합한 설정을 결정합니다. 로그로 이동하여 제안된 설정을 볼 수 있습니다. autotune에서 권장하는 구성은 드라이버 로그, 특히 [Autotune]으로 시작하는 항목에 있습니다.
로그에서 다양한 유형의 항목을 찾을 수 있습니다. 주요 로그는 다음과 같습니다.
Status | 설명 |
---|---|
AUTOTUNE_DISABLED | 건너뜀. Autotune을 사용할 수 없습니다. 원격 분석 데이터 검색 및 쿼리 최적화를 방해합니다. 고객의 개인 정보를 존중하면서 기능을 완전히 사용하려면 Autotune을 사용하도록 설정하세요." |
QUERY_TUNING_DISABLED | 건너뜀. Autotune 쿼리 튜닝을 사용할 수 없습니다. Spark SQL 쿼리에 대한 설정을 미세 조정하려면 사용하도록 설정하세요. |
QUERY_PATTERN_NOT_MATCH | 건너뜀. 쿼리 패턴이 일치하지 않습니다. Autotune은 읽기 전용 쿼리에 효과적입니다. |
QUERY_DURATION_TOO_SHORT | 건너뜀. 쿼리 기간이 너무 짧아 최적화할 수 없습니다. 효과적인 튜닝을 위해 Autotune에는 더 긴 쿼리가 필요합니다. 쿼리는 15초 이상 실행되어야 합니다. |
QUERY_TUNING_SUCCEED | 성공. 쿼리 튜닝이 완료되었습니다. 최적의 Spark 설정이 적용되었습니다. |
투명성 메모
책임 있는 AI 표준을 준수하기 위해 이 섹션의 목표는 Autotune 기능의 사용 및 유효성 검사에 대해 명확히 설명하여 투명성을 개선하고 정보에 입각한 의사 결정을 가능하게 하는 것입니다.
Autotune의 용도
Autotune은 주로 데이터 전문가를 위해 Apache Spark 워크로드 효율성을 개선하고자 개발되었습니다. 주요 기능은 다음과 같습니다.
- 실행 시간을 단축하기 위해 Apache Spark 구성 튜닝을 자동화합니다.
- 수동 튜닝 작업을 최소화합니다.
- 기록 워크로드 데이터를 활용하여 구성을 반복적으로 구체화합니다.
Autotune 유효성 검사
Autotune은 효율성과 안전을 보장하기 위해 광범위한 테스트를 거쳤습니다.
- 다양한 Spark 워크로드를 사용하여 엄격한 테스트를 통해 튜닝 알고리즘의 효능을 확인합니다.
- 성능 이점을 입증하기 위해 표준 Spark 최적화 방법을 기준으로 벤치마킹했습니다.
- Autotune의 실용적인 가치를 강조하는 실제 사례 연구.
- 엄격한 보안 및 개인 정보 보호 표준을 준수하여 사용자 데이터를 보호합니다.
사용자 데이터는 중요한 정보의 오용 또는 노출을 방지하기 위해 강력한 보호를 통해 워크로드의 성능을 향상시키는 데만 사용됩니다.