참고: 이 내용은 2022. 5. 26에 게시된 컨텐츠(Snowpark for Python: Bringing Efficiency and Governance to Polyglot ML Pipelines)에서 번역되었습니다.

머신 러닝(ML)은 현대 데이터 아키텍처에 다른 어떤 워크플로우보다 더 많은 스트레스를 주었습니다. 많은 경우 머신 러닝의 성공 여부는 다중 언어 데이터 팀의 협력에 달려 있는데, 팀은 데이터 수집에서 ML 모델 추론에 이르는 여러 단계를 실행하기 위해 SQL 및 Python 기반의 파이프라인을 결합합니다.

데이터 팀의 이러한 다중 언어 특성은 머신 러닝 워크플로우를 운영하고 데이터로부터 지속 가능한 투자 수익을 창출하는 조직의 능력을 저해하는 가장 큰 장애물 중 하나입니다.

다중 언어 장애

10년 이상 데이터 전문가들은 데이터 민주화의 유토피아를 이루기 위해, 즉 역할이나 기술에 관계없이 누구나 일상 업무에서 데이터의 힘을 활용할 수 있는 미래를 구축하기 위해 계속 선전하고, 기반을 구축하고, 힘써 노력해 왔습니다.

하지만 다양한 배경을 가진 더 많은 사람들이 대화에 참여하면서, 데이터로 대화를 나눌 때 모두가 동일한 프로그래밍 언어를 사용하기를 기대하는 것은 비현실적인 일이 되었습니다. 시간이 지나면서 다양한 커뮤니티의 요구를 충족하기 위해 다양한 언어들이 출현했습니다. SQL이 오랫동안 대규모 데이터 변환 및 관리의 중심이 되어 온 반면, Python과 같은 다른 언어들은 확장성뿐 아니라 표현성을 높이기 위해 기능적 구성에 유연성을 추가했습니다. 현재 애플리케이션 개발에서 정량적 분석 및 ML에 이르기까지 모든 것을 단순화하기 위한 수많은 Python 프레임워크가 있습니다.

ML과 관련해 발생하는 머신 러닝 운영(MLOps)의 많은 어려움들은 그러한 다중 언어 장애와 직접적인 관련이 있습니다. 흔히, 복잡한 학습 또는 추론 파이프라인에서 특정 작업을 위한 가장 효과적인 도구는 SQL 또는 Python으로 작성될 수 있습니다. 다양한 프레임워크(예: TensorFlow, Pytorch 등)와 이를 지원하기 위한 전문화된 컴퓨팅 인프라가 이러한 복잡성을 더욱 악화시킵니다. MLOps 및 DevOps 팀은 서로 다른 언어와 프레임워크를 지원하는 여러 플랫폼에 걸쳐 효율적이고 확장 가능한 파이프라인을 구축하고 유지 관리하는 번거로운 일을 떠안게 됩니다.

멀티 플랫폼 접근 방식

다중 언어 장애의 극복 수단으로 이러한 서로 다른 언어를 지원하기 위해 다양한 플랫폼이 등장했습니다. 예를 들어, 데이터 플랫폼은 전통적으로 데이터 엔지니어 및 분석가의 영역이었지만, 이러한 플랫폼들이 때때로 서로 다른 언어와 프레임워크를 필요로 하는 데이터 과학자의 요구를 항상 충족하는 것은 아니기 때문에 일부 데이터 과학자는 자체 플랫폼을 구축하는 것을 선택합니다. 또한 ML 엔지니어는 모니터링, 오케스트레이션, 버전 제어 등을 지원하기 위해 자체 MLOps 플랫폼을 구축하는 경우가 많습니다.

ML 기반 애플리케이션의 개발 및 제공에 사용되는 플랫폼

그러한 플랫폼들에서 여러 처리 단계를 연결하기 위해 Apache Airflow 및 dbt와 같은 프레임워크가 등장해 통합 허브 역할을 함으로써 이 오케스트레이션을 단순화했습니다. 하지만 고유한 플랫폼 간에 데이터가 복사 및 이동될 때 그러한 플랫폼들이 기술적 부채와 위험을 가중시키는 문제는 여전히 남아 있습니다. 또한 지금까지 그러한 플랫폼들이 데이터 계층에서 다중 언어 장애를 극복할 수 있을 정도로 발전하지 못했습니다.

기술 팀이 취약하고 지나치게 복잡한 언어 및 워크로드별 데이터 인프라를 유지 관리하기 위해 고군분투하는 동안, CIO와 CDO는 중복 파이프라인과 이러한 플랫폼들 사이에 이동하는 방대한 양의 데이터로 인한 비용 증가와 보안 위험에 계속 대처하고 있습니다.

다중 언어 플랫폼 접근 방식

(Julia와 같은 새로운 언어의 출현을 생각해 볼 때) 데이터 세계의 다중 언어 특성은 지속될 가능성이 있고, 데이터 팀은 다중 플랫폼 아키텍처 전반에 걸친 데이터 이동과 관련해서 문제와 위험에 계속 직면하고 있습니다. 이에 따라 다중 언어 플랫폼이 중요한 역할을 할 것이라는 사실이 점점 더 분명해지고 있습니다. 다중 언어 플랫폼은 다양한 단일 언어 플랫폼 간에 데이터를 이동시키기보다는 여러 팀 및 언어의 처리 요구 사항을 지원할 수 있기 때문에 관리되는 경계 외부로 데이터를 이동해야 할 필요성을 줄일 수 있습니다.

아키텍처를 간소화하고, 서로 다른 팀 간의 협업을 강화하고, 모든 데이터에 걸쳐 일관된 거버넌스를 제공하기 위해서는 동종 업계 최고의 오케스트레이션 프레임워크와 완벽하게 통합되는 더 많은 다중 언어 플랫폼이 필요합니다.

Snowpark: 현대 데이터 팀을 위한 다중 언어 솔루션

Snowflake는 데이터 엔지니어, 데이터 과학자, ML 엔지니어, 애플리케이션 개발자, 그리고 그들을 지원하는 MLOps 및 DevOps 팀 간의 격차를 줄이는 다중 언어 플랫폼을 만들기 위해 Snowpark를 확장 프레임워크로 도입했습니다.

먼저 Java, Scala, JavaScript와 같은 가장 많이 사용되는 언어를 지원함으로써 Snowpark는 아키텍처를 단순화하는 동시에 데이터 복제와 관련된 비용 및 거버넌스 위험을 줄일 수 있습니다. Snowpark는 사용자가 Snowflake에서 기대하는 성능, 확장성, 단순성, 보안, 거버넌스를 활용하면서 사용자가 원하는 언어로 데이터와 대화할 수 있도록 지원합니다. 무엇보다도, Snowpark는 SQL 쿼리 또는 처리 단계의 일부로 다른 언어로 작성된 사용자 지정 함수를 쉽게 통합할 수 있도록 설계되었습니다.

이제, Python용 Snowpark(비공개 미리 보기)는 개발자, 데이터 엔지니어, 데이터 과학자, ML 엔지니어로 구성된 대규모 커뮤니티를 수용해 그것을 완전히 새로운 수준으로 끌어올렸습니다. 당연하게도 Python용 Snowpark는 또한 오케스트레이션 프레임워크와의 통합에 매우 필요한 표면적을 노출시키며, Anaconda와의 Snowflake 파트너십은 TensorFlow, Pytorch, Keras 등을 포함한 프레임워크의 거대한 생태계를 활용하는 것을 가능하게 만듭니다.

Apache Airflow: 다중 언어 워크플로우에 대한 오케스트레이션 프레임워크

동시에 Astronomer 및 Airflow 커뮤니티는 Airflow 2.0의 Taskflow API를 포함해 Python에 대한 지원을 계속 추가해 가고 있습니다. Taskflow는 데이터 팀을 위한 편안한 Python 인터페이스를 제공하며 동시에 우수한 소프트웨어 개발 사례를 지원합니다. Taskflow를 Snowpark와 함께 사용하면 Python에서 복잡한 데이터 변환을 쉽게 정의할 수 있을 뿐만 아니라 ML과 같은 비 SQL 작업을 데이터 이동 없이 DAG에 통합할 수 있습니다.

Snowpark 및 Airflow를 사용하면 데이터 팀은 데이터를 이동하거나 복사하지 않고도 ELT, 기능 엔지니어링, 실험, 모델 학습, 추론, 모니터링, 심지어 강력한 시각적 애플리케이션의 전체 파이프라인을 Streamlit에서 실행할 수 있습니다. 이를 통해 복잡성을 제거하고, 거버넌스 위험을 줄이며, 동종 최고의 프레임워크를 통한 개방성을 지원하기 때문에 복잡하고 확장 가능한 파이프라인을 확실하게 관리할 수 있습니다.

다중 언어 팀의 역량 강화

데이터 민주화로 인해, 오늘날의 팀들은 다양한 언어와 프레임워크를 지원하는 플랫폼이 필요합니다. Snowpark는 세계 최고의 오케스트레이션 프레임워크와의 개방형 통합을 지원하는 단일 플랫폼을 통해 이러한 다중 언어 팀의 역량을 높이며, 그로 인해 우수한 데이터 거버넌스 사례가 강화되고 운영 단순화가 가능해집니다.

Snowpark는 Java/Scala용으로는 이미 제공되고 있고, Python용은 현재 비공개 미리 보기 상태입니다. 공개 미리 보기에서 언제 제공되는지 알아보려면 여기에서 등록하세요.