Cloudflare에서는 초창기부터 웹 앱 방화벽(WAF) 등의 핵심 서비스를 ML 및 AI에 의존해 왔습니다. 이 여정을 통해 저희는 대규모로 AI 배포를 실행하는 것과 필요한 모든 도구 및 프로세스에 대해 많은 교훈을 얻었습니다. Cloudflare에서는 최근 Workers AI를 출시하여 추론을 위해 많은 부분을 추상화하여 개발자가 단 몇 줄의 코드로 강력한 모델을 활용할 수 있도록 지원합니다. 이 게시물에서는 ML 방정식의 다른 측면인 _학습_에서 얻은 몇 가지 교훈을 살펴보겠습니다.
Cloudflare에서는 광범위한 경험의 학습 모델을 보유하고 있으며 이를 사용하여 제품을 개선합니다. 끊임없이 진화하는 ML 모델은 악의적인 페이로드로부터 고객을 보호하는 데 도움이 되는 WAF Attack Score를 주도합니다. 또 다른 진화 모델은 봇 관리 제품을 강화하여 고객에 대한 봇 공격을 포착하고 방지합니다. Cloudflare의 고객 지원은 데이터 과학으로 강화됩니다. 저희는 전역 네트워크를 통해 위협을 식별하기 위해 머신 러닝을 구축합니다. 무엇보다도 Cloudflare에서는 네트워크 전반에 걸쳐 전례 없는 규모로 머신 러닝을 제공하고 있습니다.
이들 각각의 제품은 다른 많은 제품과 함께 실험, 학습, 배포를 포함한 ML 모델을 Cloudflare 내에서 중요한 위치로 격상시켰습니다. 저희는 MLOps 활동을 통해 저희 팀에서 지속해서 효율적으로 혁신할 수 있도록 Cloudflare 데이터 과학자와 협업하여 다음과 같은 모범 사례를 구현했습니다.
Notebooks
주어진 사용 사례와 데이터를 고려했을 때, 많은 데이터 과학자/AI 과학자의 첫 번째 단계는 데이터 탐색, 피처 엔지니어링, 모델 실험을 위한 환경을 설정하는 것입니다. 이러한 요구 사항을 충족하기 위한 일반적인 도구는 Jupyter Notebooks입니다. 이러한 환경은 브라우저에서 실행하거나 로컬 코드 편집기에 연결할 수 있는 간편한 원격 Python 환경을 제공합니다. notebooks가 확장 가능하고 협업에 개방적이도록 만들기 위해, 저희는 Kubernetes에 JupyterHub를 배포합니다. JupyterHub를 통해 데이터 과학자로 구성된 팀의 리소스를 관리하고 적절한 개발 환경을 확보할 수 있습니다. 각 팀에서는 특정 요구 사항이나 개별 프로젝트를 충족하도록 라이브러리를 사전 설치하고 사용자 환경을 구성하여 환경을 맞춤 설정할 수 있습니다.
이 notebook 공간 역시 항상 진화하고 있습니다. 오픈 소스 프로젝트에는 다음과 같은 추가 기능이 포함됩니다.
nbdev - notebook 환경을 개선하기 위한 Python 패키지
Kubeflow - 머신 러닝을 위한 Kubernetes 네이티브 CNCF 프로젝트
deployKF - 모든 Kubernetes 클러스터상의 ML 플랫폼으로, 중앙 집중식 구성, 자체 업그레이드, Kubeflow, Airflow, MLflow 등의 주요 ML 및 데이터 도구에 대한 지원 제공
GitOps
Cloudflare의 목표는 데이터 과학자와 AI 과학자가 머신 러닝 모델을 신속하게 개발하고 테스트할 수 있는 사용하기 쉬운 플랫폼을 제공하는 것입니다. 따라서, Cloudflare의 MLOps 플랫폼에서의 지속적 전달 전략과 인프라 관리로 GitOps를 도입하고 있습니다. GitOps는 분산 버전 관리 시스템인 Git를 인프라, 앱 구성, 배포 프로세스를 정의하고 관리하기 위한 단일 소스로 활용하는 소프트웨어 개발 방법입니다. 이는 선언적이고 감사 가능한 방식으로 앱 및 인프라의 배포와 관리를 자동화하고 간소화하는 것을 목표로 합니다. GitOps는 머신 러닝(ML) 워크플로우에 중요한 자동화 및 협업 원칙과 잘 부합합니다. GitOps는 Git 리포지터리를 선언적 인프라와 App 코드의 소스로 활용합니다.
데이터 과학자는 원하는 인프라와 앱 상태를 정의해야 합니다. 이렇게 하려면 일반적으로 많은 사용자 정의 작업이 필요하지만, ArgoCD와 모델 템플릿을 사용하면 새 앱을 추가하기 위해 간단히 풀 요청만 하면 됩니다. Helm 차트와 Kustomize가 모두 지원되므로 다양한 환경과 작업에 맞게 구성할 수 있습니다. ArgoCD를 사용하면 선언적 GitOps가 지속적 제공 프로세스를 시작합니다. ArgoCD는 인프라와 앱의 원하는 상태를 지속해서 확인하여 Git 리포지터리와 동기화되도록 합니다.
향후 저희 플랫폼(Jupyterhub 포함)을 Kubernetes의 머신 러닝 워크플로우 플랫폼인 Kubeflow로 마이그레이션하여 notebooks와 엔드투엔드 파이프라인의 개발, 배포, 관리를 간소화할 예정입니다. 이는 새로운 프로젝트인 deployKF를 사용하여 가장 잘 배포되며, Kubeflow 및 Kubeflow 내에서 제공되는 것 이상으로 확장된 여러 구성 요소에 걸쳐 분산형 구성 관리가 가능합니다.
템플릿
올바른 도구와 구조로 프로젝트를 시작하는 것이 성공하느냐, 정체되느냐의 차이로 이어질 수 있습니다. Cloudflare에서는 예제 모델이 포함된 프로덕션 준비 데이터 과학 리포지터리인 다양한 모델 템플릿을 선별했습니다. 이 모델 템플릿은 프로덕션을 통해 배포되어 향후 프로젝트를 위한 안정적인 기반이 될 수 있도록 지속해서 유지됩니다. 새 프로젝트를 시작하려면 Makefile 명령 한 번으로 사용자가 선택한 git 프로젝트에 새 CICD 프로젝트를 빌드하기만 하면 됩니다. 이러한 템플릿 유틸리티 패키지는 Jupyter Notebooks에서 사용되는 것과 동일하며, R2/S3/GCS buckets, D1/Postgres/Bigquery/Clickhouse 데이터베이스에 연결됩니다. 데이터 과학자는 이러한 템플릿을 사용하여 자신 있게 새 프로젝트를 즉시 시작할 수 있습니다. 이러한 템플릿은 아직 공개적으로 사용할 수는 없지만, 저희 팀에서는 향후 오픈 소스화 할 예정입니다.
1. 학습 템플릿Cludflare의 모델 학습 템플릿은 모든 모델을 구축할 수 있는 탄탄한 기반을 제공하며 모든 데이터 소스에서 데이터를 추출, 변환, 로드(ETL)할 수 있도록 구성되어 있습니다. 이 템플릿에는 기능 엔지니어링, 모델 메타데이터를 이용하는 실험 추적, 모델 파이프라인을 프로덕션화 하기 위한 방향성 비순환 그래프(DAG)를 통한 오케스트레이션 선택 등을 위한 도우미 기능이 포함되어 있습니다. 각 오케스트레이션은 Airflow 또는 Argo Workflows를 사용하도록 구성할 수 있습니다.
2. 배치 추론 템플릿배치 및 마이크로 배치 추론은 처리 효율에 큰 영향을 미칠 수 있습니다. 일괄 추론 모델 템플릿은 일관된 결과를 위해 모델을 예약할 수 있으며, Airflow 또는 Argo Workflows를사용하도록 구성할 수 있습니다.
3. Stream 추론 템플릿이 템플릿을 사용하면 팀에서 실시간 추론을 쉽게 배포할 수 있습니다. FastAPI를 사용하는 마이크로서비스로서 Kubernetes에 맞게 조정된 이 템플릿을 사용하면 컨테이너에서 익숙한 Python을 사용하여 추론을 실행할 수 있습니다. 이 마이크로서비스에는 이미 Swagger를 사용한 REST 대화형 문서가 내장되어 있으며, Terraform의 Cloudflare Access 인증 토큰과 통합되어 있습니다.
4. 설명 가능성 템플릿설명 가능성을 위한 모델 템플릿은 모델 유형과 실험을 조명하기 위해 대시보드를 띄웁니다. 기간 F1 점수, 시간 경과에 따른 기능 및 데이터의 드리프트와 같은 주요 값을 이해할 수 있는 것이 중요합니다. Streamlit와 Bokeh 같은 도구가 이를 가능하게 해줍니다.
오케스트레이션
데이터 과학을 일관된 파이프라인으로 구성하려면 많은 데이터와 여러 모델 버전이 필요합니다. 데이터에서 모델, 모델에서 추론으로 이어지는 단계를 하나로 엮어주는 강력한 플로우차트 오케스트레이션 패러다임인 방향성 비순환 그래프(DAG)가 등장합니다. DAG 파이프라인을 실행하는 데는 여러 가지 고유한 접근 방식이 있지만, Cloudflare에서는 데이터 과학팀이 가장 선호하는 방식이 우선이라는 것을 알게 되었습니다. 팀마다 사용 사례와 경험에 따라 서로 다른 접근 방식을 이용합니다.
Apache Airflow - 표준 DAG ComposerApache Airflow는 DAG(방향성 비순환 그래프) 기반 오케스트레이션 접근 방식의 표준입니다. 방대한 커뮤니티와 광범위한 플러그인 지원을 갖춘 Airflow는 다양한 워크플로우를 처리하는 데 탁월합니다. 다양한 시스템과 통합할 수 있는 유연성과 작업 모니터링을 위한 웹 기반 UI 덕분에 복잡한 작업 시퀀스를 오케스트레이션하는 데 널리 사용되고 있습니다. Airflow는 모든 데이터 또는 머신 러닝 워크플로우를 실행하는 데 사용할 수 있습니다.
Argo Workflows - Kubernetes 네이티브의 탁월함Kubernetes용으로 구축된 Argo Workflows는 워크플로우 오케스트레이션을 위한 컨테이너 에코시스템을 수용하고, 직관적인 YAML 기반 워크플로우 정의를 자랑하며, 마이크로서비스 기반 워크플로우 실행에 탁월합니다. 또한 확장성, 안정성, 기본 컨테이너 지원을 제공하는 Kubernetes와의 통합으로 Kubernetes 생태계에 깊이 뿌리를 내린 조직에 매우 적합합니다. Argo Workflows는 모든 데이터 또는 머신 러닝 워크플로우를 실행하는 데에도 사용할 수 있습니다.
Kubeflow Pipelines - 워크플로우를 위한 플랫폼Kubeflow Pipelines는 머신 러닝 워크플로우 조정을 위해 맞춤화된, 보다 구체적인 접근 방식입니다. "KFP"는 ML 환경에서 데이터 준비, 모델 학습, 배포에 대한 고유한 요구 사항을 해결하는 것을 목표로 합니다. KFP는 Kubeflow 생태계의 통합 구성 요소로서 협업, 재사용성, 버전 관리에 중점을 두고 ML 워크플로우를 간소화하며, Kubernetes와의 호환성을 통해 원활한 통합과 효율적인 오케스트레이션을 보장합니다.
Temporal - 스테이트풀 워크플로우를 지원하는 도구Temporal은 장기적으로 실행되는 스테이트풀 워크플로우의 오케스트레이션을 강조하는 입장을 취합니다. 비교적 최근에 등장한 이 도구는 탄력적인 이벤트 중심 앱을 관리하고 워크플로우 상태를 보존하며 장애로부터 효율적인 복구를 가능하게 하는 데 강점을 보입니다. 고유한 판매 포인트는 복잡한 스테이트풀 워크플로우를 관리하여 내구성 있고 내결함성 있는 오케스트레이션 솔루션을 제공하는 능력에 있습니다.
오케스트레이션 환경에서 선택은 궁극적으로 팀과 사용 사례에 따라 결정됩니다. 이들은 모두 오픈 소스 프로젝트이므로 다양한 작업 스타일을 지원하는 것이 유일한 제한 사항이지만, 투자할 만한 가치가 있다고 생각합니다.
하드웨어
최적의 성능을 달성하려면 팀에 효과적인 하드웨어를 제공하기 위해 워크로드와 기본 사용 사례에 대한 이해가 필요합니다. 그 목표는 데이터 과학자를 지원하고 지원과 활용 사이의 균형을 맞추는 것입니다. 각 워크로드는 서로 다르며, 작업에 적합한 완벽한 도구를 찾으려면 각 사용 사례를 GPU와 CPU의 기능에 맞게 미세 조정하는 것이 중요합니다. 핵심 데이터센터 워크로드 및 에지 추론의 경우, GPU는 비즈니스의 핵심인 속도와 효율성을 한 단계 끌어올렸습니다. Prometheus에서 사용하는 통합 가시성과 메트릭을 통해 오케스트레이션을 추적하여 성능을 최적화하고 하드웨어 활용도를 극대화하며 Kubernetes 네이티브 환경 내에서 운영할 수 있습니다.
채택
채택은 MLops 여정에서 가장 어려운 단계 중 하나인 경우가 많습니다. 구축에 뛰어들기 전에 다양한 팀과 데이터 과학에 대한 그들의 접근 방식을 이해하는 것이 중요합니다. Cloudflare에서는 수년 전 이 프로세스가 시작되었으며, 그 때각 팀에서 자체 머신 러닝 솔루션을 개별적으로 시작했습니다. 이러한 솔루션이 발전함에 따라 회사 전체가 협력하여 다른 팀과 업무가 격리되는 것을 방지해야 한다는 공통의 과제에 직면했습니다. 또한 머신 러닝에 대한 잠재력은 있지만, 팀 내에 데이터 과학에 대한 전문 지식이 없는 팀도 있었습니다. 이는 각 팀에서 사용 중인 ML 프로세스를 간소화하고 표준화하는 데 도움이 되었고, 데이터 과학팀에 잠재적인 새 프로젝트를 소개하여 아이디어 창출 및 발견 프로세스를 시작할 수 있도록 MLops에서 개입할 수 있는 기회가 제공되었습니다.
가능한 경우, Cloudflare에서는 프로젝트를 시작하고 성공을 위한 파이프라인을 형성하는 데 도움을 줄 수 있을 때 가장 큰 성공을 거둘 수 있음을 알게 되었습니다. 노트북, 오케스트레이션, 데이터 버저닝(DVC), 기능 엔지니어링(Feast), 모델 버전닝(MLflow) 등의 공유 사용 구성 요소를 제공하면 팀들이 직접 협업할 수 있습니다.
앞으로의 전망
데이터 과학이 저희 비즈니스와 고객의 비즈니스를 발전시키고 있다는 것은 의심할 여지가 없습니다. 저희는 모델을 통해 자체 제품을 개선하고, AI로 구축된 앱과 앱을 보호하는 데 도움이 되는 AI 인프라를 구축했습니다. 또한 네트워크의 힘을 활용하여 우리와 고객을 위한 AI를 제공할 수 있습니다. 저희는 데이터 과학 커뮤니티에서 데이터에서 실질적인 가치를 더 쉽게 창출할 수 있도록 머신 러닝 대기업과 파트너십을 맺었습니다.
행동 촉구 메시지는 다음과 같습니다. 최신 소프트웨어 관행과 도구를 데이터 과학에 도입하는 Cloudflare 커뮤니티에 가입하세요. Cloudflare의 더 많은 데이터 과학을 기대해 주세요. Cloudflare에서 더 나은 인터넷을 구축하기 위해 데이터를 안전하게 활용할 수 있도록 도와주세요.