Flyte와 Weights & Biases 통합
Flyte의 최신 Weights & Biases 플러그인을 통해 Union에서 ML/AI 워크플로를 매끄럽게 실행하고 통합하는 방법을 알아보세요. 이 글은 AI 번역본입니다. 오역이 있을 수 있으니 댓글로 알려주세요.
Created on September 15|Last edited on September 15
Comment
Flyte의 최신 Weights & Biases 플러그인을 통해 이제 Union에서 머신러닝 또는 AI 워크플로를 효과적으로 실행하고 Weights & Biases 기능과 통합할 수 있습니다. Union은 확장성, 선언적 인프라, 데이터 계보를 제공하여 AI 또는 ML 워크플로를 빠르게 반복하고 프로덕션 수준으로 전환할 수 있게 합니다. Weights & Biases는 고객이 모델을 더 빠르게 구축하도록 돕고, LLM 미세 조정, 그리고 신뢰를 갖고 GenAI 애플리케이션을 개발하세요, 단일 시스템 오브 레코드에서 모두 관리됩니다. 이 블로그 글에서는 플러그인이 어떻게 동작하는지 깊이 있게 살펴보겠습니다.
"이번 통합은 대규모 ML 프로젝트를 함께 수행하는 생태계 구성원이 많은 우리에게 특히 가치가 큽니다. 이제 데이터셋 큐레이션, 학습, 평가 전 과정을 한곳에서 훨씬 더 폭넓게 추적할 수 있기 때문입니다. 단일 소스 오브 트루스를 활용해 다른 구성원의 관련 업데이트를 따라가고, 진행 중 발생하는 문제를 더 쉽게 정확히 짚어낼 수 있어 팀의 추진 속도도 빨라집니다."
Alborz Alavian, Woven by Toyota 수석 엔지니어링 매니저
flytekit의 Weights & Biases 플러그인
Union은 데이터와 컴퓨팅을 모두 근본적인 구성 요소로 간주합니다. XGBoost, PyTorch, PyTorch Lightning과 같은 머신러닝 또는 AI 라이브러리를 사용해 모델을 학습할 수 있습니다. XGBoost 또는 PyTorch 그리고 Union 아티팩트로 해당 모델들을 추적하세요. 기본 데이터가 변경되면 Union의 리액티브 워크플로가 트리거되어, 다수의 모델을 학습하도록 자동으로 확장됩니다.
이 첫 번째 예시에서, flytekit의 wandb_init Weights & Biases에서 실행을 구성하고, XGBoost 콜백이 모델 진행 상태를 자동으로 추적합니다. 함수에 데코레이터를 적용한 뒤에는, 본문은 Weights & Biases에서 볼 수 있는 코드로 구성됩니다. 문서:
from flytekit import taskfrom flytekitplugins.wandb import wandb_initwandb_secret = Secret(key="wandb-api-key")@task(container_image=image, secret_requests=[wandb_secret])@wandb_init(project=WANDB_PROJECT, entity=WANDB_ENTITY, secret=wandb_secret,)def train(data: pd.DataFrame) -> float:# Normal usage of wandbfrom wandb.integration.xgboost import WandbCallbackimport wandbbst = XGBClassifier(...,callbacks=[WandbCallback(log_model=True)])wandb.run.log({"test_score": test_score})return test_score
그 wandb_secret Secret 객체는 Union의 CLI로 생성한 Weights & Biases API 키를 가리킵니다. unionai create secret wandb-api-key그 wandb_init 데코레이터가 실행을 시작하고 Union의 UI에 해당 실행으로 연결되는 링크를 표시하도록 구성합니다:

링크를 클릭하면 Weights & Biases로 이동하며, 모델 학습 실행에 대한 모든 추적 정보를 확인할 수 있습니다. Weights & Biases에서는 실행 설명에 Flyte Execution 링크가 포함되어 있습니다.

반응형 워크플로우
~를 통해 Union의 아티팩트을 통해, 다른 워크플로우가 데이터를 갱신하면 자동으로 트리거되는 워크플로우를 작성할 수 있습니다. 이를 통해 워크플로우를 모듈식으로 구성할 수 있으며, 한 팀은 데이터 추출에, 다른 팀은 모델링에 집중할 수 있습니다. Python 타입 주석을 사용해 아티팩트를 선언할 수 있습니다:
from flytekit.core.artifact import Artifactfrom typing_extensions import AnnotatedMyDataset = Artifact(name="my_dataset")@task(...)@wandb_init(...)def train(data: pd.DataFrame) -> float:...# train_workflow will trigger when "my_dataset" gets updated@workflowdef train_workflow(data: pd.DataFrame = MyDataset.query()):train(data)trigger = LaunchPlan.create("trigger_train_workflow",train_workflow,trigger=OnArtifact(trigger_on=MyDataset),)
이 train_with_artifact 작업은 "my_dataset업스트림 데이터셋을 나타내는 아티팩트입니다. Union의 wandb_init 데코레이터를 사용하면 Weights & Biases가 업데이트된 데이터셋으로 실행되는 새로운 학습 작업의 지표와 결과를 추적합니다. 데이터셋이 시간이 지나며 변할 때 모델 성능의 변화를 관찰할 수 있습니다.
실험 확장 실행
~를 통해 Flyte의 동적 워크플로우, 여러 개의 학습 작업을 각자 필요한 리소스로 빠르게 확장할 수 있습니다. 이 예시에서는 Flyte의 선언적 인프라를 활용해 다양한 모델을 학습하는 방법을 보여줍니다. PyTorch Lightning GPU에서 실행됩니다. 함수 본문은 PyTorch Lightning의 일반적인 코드로 구성되어 있으며, 해당 문서에서 확인할 수 있습니다. 문서.
from lightning.pytorch import Trainerfrom lightning.pytorch.loggers import WandbLoggerfrom flytekit.extras.accelerators import T4@task(container_image=image,requests=Resources(gpu="1", cpu="2", mem="8Gi"),accelerator=T4,)@wandb_init(...)def train_lightning_model(n_layer: int) -> dict:wandb_logger = WandbLogger(log_model="all")model = MyLightningModule(n_layer_1=n_layer, n_layer_2=n_layer)trainer = Trainer(max_epochs=5, logger=wandb_logger)trainer.fit(model, training_loader, validation_loader)...@dynamic(container_image=image)def main(n_layers: list[int]):dataset = get_dataset()for n_layer in n_layers:train_lightning_model(dataset=dataset, n_layer=n_layer)
Union UI에서 워크플로우가 동적으로 확장되어 여러 GPU 기반 작업으로 실행됩니다:

PyTorch Lightning의 WandbLogger는 모델 학습 중 지표, 하이퍼파라미터, 체크포인트를 자동으로 기록합니다. Weights & Biases 플랫폼에서 서로 다른 실행을 비교하고 모델 성능을 평가할 수 있습니다.
마무리
Union의 선언적 인프라와 확장 가능한 오케스트레이션 플랫폼을 통해 머신러닝이나 AI 워크플로우를 손쉽게 확장하고 프로덕션에 배포할 수 있습니다. flytekit의 Weights & Biases 플러그인을 사용하면 실험을 쉽게 추적하고, 결과를 시각화하며, 모델을 디버깅할 수 있습니다. 플러그인은 다음과 같이 설치하여 사용하세요 pip install flytekitplugins-wandb.
Add a comment