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