RagModel의 모델을 교체하고, weave.Evaluation으로 업데이트된 애플리케이션을 평가한 다음, 새 RAG 모델을 다시 레지스트리에 게시합니다. 이 워크플로는 W&B Models로 모델을 학습 및 파인튜닝하고, 이 모델을 Weave로 추적 및 평가하는 LLM 애플리케이션에 통합하려는 팀을 위한 것입니다.
이 노트북은 대화형 노트북입니다. 로컬에서 실행하거나 다음 링크를 사용하세요.
사전 요구 사항
먼저 필요한 라이브러리를 설치하고 API 키를 설정한 다음, Forge에 로그인하여 새 Weights & Biases 프로젝트를 생성하세요.pip를 사용하여weave,pandas,unsloth,wandb,litellm,pydantic,torch,faiss-gpu를 설치하세요.
- 환경에 있는 필수 API 키를 추가하세요.
- Forge에 로그인한 후 새 프로젝트를 생성하세요.
레지스트리에서 ChatModel을 다운로드하고 UnslothLoRAChatModel 구현하기
이 시나리오에서는 Model Team이 성능 최적화를 위해 unsloth 라이브러리로 Llama-3.2 모델을 이미 파인튜닝했으며, 해당 모델은 W&B 레지스트리에서 사용할 수 있습니다. 이 단계에서는 레지스트리에서 파인튜닝된 ChatModel을 가져온 다음, RagModel과 호환되도록 weave.Model로 변환합니다.
다음 코드에서 참조하는
RagModel은 하나의 완전한 RAG 애플리케이션으로 볼 수 있는 최상위 weave.Model입니다. 여기에는 ChatModel, 벡터 데이터베이스, 프롬프트가 포함되어 있습니다. ChatModel 역시 weave.Model이며, W&B 레지스트리에서 아티팩트를 다운로드하는 코드가 들어 있습니다. ChatModel은 모듈 방식으로 교체할 수 있으므로 RagModel의 구성 요소로 다른 종류의 LLM 채팅 모델도 사용할 수 있습니다. 자세한 내용은 Weave에서 모델 보기를 참조하세요.ChatModel을 로드할 때는 어댑터와 함께 unsloth.FastLanguageModel 또는 peft.AutoPeftModelForCausalLM을 사용하면 앱에 효율적으로 인테그레이션할 수 있습니다. 레지스트리에서 모델을 다운로드한 후에는 model_post_init 메서드로 초기화 및 예측 로직을 설정하세요. 이 단계에 필요한 코드는 레지스트리의 Use 탭에서 확인할 수 있으며, 그대로 복사해 구현에 사용할 수 있습니다.
다음 코드는 레지스트리에서 가져온 파인튜닝된 Llama-3.2 모델을 관리, 초기화, 사용하기 위한 UnslothLoRAChatModel 클래스를 정의합니다. UnslothLoRAChatModel은 최적화된 추론을 위해 unsloth.FastLanguageModel을 사용합니다. model_post_init 메서드는 모델을 다운로드하고 설정하며, predict 메서드는 사용자 쿼리를 처리하고 응답을 생성합니다. 사용 사례에 맞게 코드를 수정하려면 MODEL_REG_URL을 파인튜닝된 모델의 올바른 레지스트리 경로로 변경하고, 하드웨어나 요구 사항에 따라 max_seq_length, dtype 등의 매개변수를 조정하세요.
새 ChatModel 버전을 RagModel에 통합하기
파인튜닝된 채팅 모델로 RAG 애플리케이션을 구축하면 전체 파이프라인을 처음부터 다시 만들지 않고도 맞춤화된 컴포넌트를 재사용할 수 있습니다. 이 단계에서는 Weave 프로젝트에서 기존 RagModel을 가져온 다음, 파인튜닝된 모델을 사용하도록 ChatModel을 업데이트합니다. 채팅 모델만 새것으로 교체하므로 벡터 데이터베이스나 프롬프트 같은 다른 컴포넌트는 그대로 유지됩니다. 따라서 애플리케이션의 전체 구조를 유지하면서 성능을 높일 수 있습니다.
다음 코드는 Weave 프로젝트의 레퍼런스를 사용해 RagModel 객체를 가져옵니다. 그런 다음 이전 단계에서 생성한 새 UnslothLoRAChatModel 인스턴스를 사용하도록 RagModel의 chat_model 속성을 업데이트합니다. 이어서 업데이트된 RagModel을 게시하여 새 버전을 생성합니다. 마지막으로 업데이트된 RagModel로 샘플 예측 쿼리를 실행하여 새 채팅 모델이 사용되는지 확인합니다.
weave.Evaluation 실행하기
업데이트된 RagModel을 게시했다면, 다음 단계는 새로 파인튜닝한 채팅 모델이 애플리케이션 안에서 예상대로 동작하는지 확인하는 것입니다. 이 단계에서는 기존 weave.Evaluation을 사용해 업데이트된 RagModel의 성능을 평가합니다. 이 과정을 통해 새로 파인튜닝한 채팅 모델이 RAG 애플리케이션 안에서 예상대로 동작하는지 확인할 수 있습니다. 인테그레이션을 간소화하고 Models 팀과 Apps 팀이 원활하게 협업할 수 있도록, 평가 결과를 모델의 W&B run과 Weave 워크스페이스 모두에 로깅합니다.
Models에서:
- 평가 요약은 파인튜닝된 채팅 모델을 다운로드할 때 사용한 W&B run에 로깅됩니다. 여기에는 분석용으로 워크스페이스 뷰에 표시되는 summary 메트릭과 그래프가 포함됩니다.
- 평가 트레이스 ID가 run의 설정에 추가되어 Weave 페이지로 바로 연결되므로, Model Team이 더 쉽게 추적할 수 있습니다.
ChatModel의 아티팩트 또는 레지스트리 링크가RagModel의 입력으로 저장됩니다.- 컨텍스트를 보강하기 위해 W&B run ID가 평가 트레이스에 추가 열로 저장됩니다.
RagModel로 평가를 실행한 뒤, 결과를 W&B와 Weave 모두에 로깅하는 방법을 보여줍니다. 평가 레퍼런스(WEAVE_EVAL)가 프로젝트 설정과 일치하는지 확인하세요.
새 RAG 모델을 레지스트리에 저장하기
업데이트된RagModel의 평가를 마쳤다면, 마지막으로 이 모델을 레지스트리에 다시 게시하여 다른 팀이 찾아서 재사용할 수 있도록 합니다. Models 팀과 Apps 팀 모두 업데이트된 RagModel을 앞으로 사용할 수 있도록 참조 아티팩트로 레지스트리에 푸시하세요.
다음 코드는 업데이트된 RagModel의 weave 객체 버전과 이름을 조회한 뒤, 이를 사용해 참조 링크를 생성합니다. 이어서 모델의 Weave URL을 메타데이터에 담은 새 아티팩트를 W&B에 생성합니다. 그런 다음 이 아티팩트를 레지스트리에 로깅하고 지정된 레지스트리 경로에 연결합니다.
코드를 실행하기 전에 ENTITY 및 PROJECT 변수가 W&B 설정과 일치하는지 확인하고, 올바른 대상 레지스트리 경로를 지정하세요. 이 과정에서 새 RagModel을 W&B 에코시스템에 게시하여 협업과 재사용이 가능해지면 워크플로가 마무리됩니다.
이 섹션의 코드를 실행하면 업데이트된 RagModel을 레지스트리에서 참조 아티팩트로 사용할 수 있으며, 이로써 W&B Models와 Weave 사이의 왕복 과정이 완료됩니다.