Build efficient agents with knowledge distillation on Amazon SageMaker AI
Quick Summary
Amazon SageMaker AI에서 GLM 5.3의 성공한 쇼핑 에이전트 실행 궤적을 Qwen3.5 4B에 학습시키는 SeqKD로, 다단계 작업의 품질을 유지하면서 추론 비용과 응답 시간을 줄이는 방법을 설명한다.
🖼️ 인포그래픽

🖼️ 4컷 인포그래픽

💡 한 줄 요약
Amazon SageMaker AI에서 GLM-5.3의 성공한 쇼핑 에이전트 실행 궤적을 Qwen3.5-4B에 학습시키는 SeqKD로, 다단계 작업의 품질을 유지하면서 추론 비용과 응답 시간을 줄이는 방법을 설명한다.
📌 핵심 요약
- 쇼핑 에이전트는 검색·결과 확인·조건 검증·추천을 여러 모델 호출로 수행하므로 작업당 비용이 누적된다. SeqKD는 교사 모델의 텍스트 출력을 작은 학생 모델에 지도 미세조정해 이러한 비용과 품질 사이의 격차를 줄이려는 접근이며, 교사의 가중치·로짓·그래디언트나 강화학습 인프라가 필요하지 않다.
- 예제는 Amazon Bedrock의 GLM-5.3으로 ShoppingBench 실행 궤적을 생성하고, 벤치마크 채점기가 성공으로 판정한 궤적만 남겨 Qwen3.5-4B를 Amazon SageMaker AI의 서버리스 지도 미세조정으로 학습하는 구성이다. 이후 별도로 보류한 평가 문제에서 학생을 평가하고 실시간 추론 엔드포인트로 제공하는 흐름을 제시한다.
- ShoppingBench의 750개 문제를 학습용 426개와 평가용 324개로 고정 분할하며, 평가 문제는 product 103개·shop 105개·voucher 116개다. 교사는 reasoning을 켜고 temperature 1.0으로 문제당 두 번 실행한다고 설명하지만, 원문에 적힌 총 850개 궤적은 학습 문제 426개의 두 배와 일치하지 않는다.
- 성공 궤적에는 요청, 단계별 추론·도구 호출·환경 관측이 포함된다. 이를 단계마다 대화 이력을 담은 user 입력과 다음 추론·행동을 담은 assistant 정답으로 변환하며, assistant에만 손실을 적용한다. 필터링 후 학습 행은 약 2,600개, 검증 행은 약 130개이며 학생 모델의 정확한 채팅 템플릿을 사용한다.
- 학습·검증 분리는 행이 아닌 문제 단위로 수행하고 약 5%의 문제를 검증용으로 보류해 유사 문맥의 유출을 막는다. 단계별 인코딩은 누적 문맥을 반복하며 서버리스 미세조정은 dataset_max_len을 넘는 내용을 잘라낸다. 제공된 본문은 이 설명 도중 끝나므로 구체적인 길이 설정, 실제 평가 결과, 비용 절감 수치는 확인할 수 없다.
🧩 주요 포인트
- 교사의 텍스트만 사용하는 SeqKD → API로 접근하는 교사의 출력을 재사용 가능한 데이터로 축적하고, 여러 학생 모델의 학습·시험에 활용할 수 있다.
- ShoppingBench 채점기로 성공 궤적만 선별하고 추론과 행동을 함께 학습 → 불완전한 교사의 실행에서도 모방할 대상을 골라 다단계 의사결정을 전달한다.
- 단계별 인코딩과 문제 단위 분리 → 다음 행동을 직접 학습하고 검증 유출을 줄이지만, 문맥 반복과 dataset_max_len 제약을 관리해야 하며 효과는 별도 평가로 확인해야 한다.
🧠 상세 정리
1. 다단계 에이전트에서 누적되는 호출 비용
원문은 평점 4.5 이상인 상점에서 20달러 미만의 검은색 허리 가방을 찾는 쇼핑 요청으로 에이전트의 비용 문제를 설명한다. 이 요청을 처리하려면 카탈로그 검색, 후보 확인, 검색 조건 조정, 제약 검증, 최종 추천이 이어지며, 하나의 완료된 작업에도 프런티어 모델 호출이 여러 번 발생할 수 있다. 사용자마다 이러한 호출 비용이 반복되면 운영 규모가 커질수록 프로젝트의 투자수익성을 떨어뜨리고 출시를 가로막을 수 있다는 것이 출발점이다. 작은 모델은 응답이 빠르고 호스팅 비용이 낮지만 작업 품질이 부족할 수 있어, 단순한 모델 교체만으로는 문제를 해결하기 어렵다. 지식 증류는 큰 교사의 행동을 작은 학생에 학습시켜 품질의 상당 부분을 유지하면서 작은 모델의 속도와 비용상 이점을 얻으려는 방법으로 제시된다.
2. SeqKD가 전달하는 것은 텍스트로 표현된 행동
시퀀스 수준 지식 증류인 SeqKD는 교사가 생성한 고품질 응답을 정답 데이터로 삼아 학생을 지도 미세조정하는 방식이다. 교사의 텍스트만 필요하므로 학습 중 교사의 가중치·로짓·그래디언트에 접근하거나 강화학습 인프라를 구축할 필요가 없으며, 폐쇄형 또는 API 전용 교사에도 적용할 수 있다. 다만 가능한 출력 시퀀스의 공간이 매우 크기 때문에 교사의 전체 출력 분포를 정확하게 일치시키는 것이 아니라, 실제로 생성된 표본으로 이를 근사한다. 에이전트에서 이 표본은 단일 답변 문단이 아니라 앞선 문맥에 따라 이어지는 추론, 도구 호출, 반환된 관측의 실행 궤적이다. 따라서 전체 궤적을 학습하는 목적은 최종 답변의 표현만 복제하는 데 그치지 않고, 각 행동에 이르는 추론과 여러 단계의 행동 경로를 함께 전달하는 데 있다. 생성된 응답은 데이터셋으로 남으므로 교사를 다시 호출하지 않고도 다른 학생 모델의 학습이나 시험에 재사용할 수 있다.
3. 적합한 적용 조건과 성공 궤적 선별의 중요성
원문이 제시하는 첫 번째 적용 조건은 입력은 있지만 고품질 정답이 없는 경우로, 교사가 정답을 생성해 새로운 작업이나 도메인의 미세조정 데이터를 마련한다. 특히 도구를 사용하는 다단계 궤적은 하나의 문제에서도 부분적으로만 맞는 실행이 여러 갈래로 생기므로, 생성량뿐 아니라 성공과 실패를 구분할 신뢰할 만한 채점기가 중요하다. 프로그램으로 채점할 수 있는 벤치마크가 있으면 교사의 실행 중 문제를 해결한 궤적만 남기는 방식으로 학습 대상을 선별할 수 있다. 또 다른 조건은 교사에 API로만 접근할 수 있는 경우이며, SeqKD는 내부 정보 없이 텍스트 응답으로 학습한다는 점에서 활용하기 쉽다고 설명한다. 원문은 추론 전달을 위한 비용 효율적인 출발점의 사례로 DeepSeek-R1 증류 모델을 들며, 큰 교사의 생성 추론을 Qwen과 Llama 계열의 작은 학생에 미세조정한 사례라고 소개한다.
4. 실행 환경과 전체 학습·배포 구성
예제 실행에는 AWS 계정과 함께 Amazon S3 버킷의 읽기·쓰기 및 교사 모델 호출 권한을 갖춘 SageMaker AI용 IAM 역할이 필요하다. 지원되는 AWS 리전의 SageMaker AI 모델 사용자 지정 기능과 Amazon Bedrock의 교사 모델에 접근할 수 있어야 하며, 환경은 Amazon SageMaker Studio 또는 AWS CLI가 구성된 로컬 IDE를 사용한다. Python 3.12 이상, 버전을 고정한 SageMaker Python SDK v3와 boto3가 요구되고, 데이터 준비와 로컬 채점이 CPU에서 실행되므로 노트북 환경은 최소 ml.m5.4xlarge 인스턴스를 권장한다. 전체 구성은 Amazon Bedrock의 GLM-5.3이 ShoppingBench 에이전트로 실행한 궤적을 채점하고, 성공 궤적으로 Qwen3.5-4B를 SageMaker AI에서 서버리스 지도 미세조정하는 흐름이다. 이후 보류된 ShoppingBench 평가 분할로 학생을 평가하고 도구 실행 루프를 수행하는 SageMaker AI Inference 실시간 엔드포인트로 제공하는 구성이지만, 제공된 본문에는 이 후반 과정의 실제 결과가 담겨 있지 않다.
5. ShoppingBench 분할과 교사 실행의 다양성
ShoppingBench는 product·shop·voucher 의도별로 250개씩 총 750개의 합성 쇼핑 문제를 제공하며, 각 문제에는 공개되지 않은 정답과 성공을 정의하는 제약이 있다. 예제는 고정된 인덱스로 학습 문제 426개와 별도 평가 문제 324개를 나누어 두 집합이 겹치지 않게 하며, 평가 집합은 product 103개·shop 105개·voucher 116개로 구성한다. 교사인 GLM-5.3은 reasoning을 켜고 temperature 1.0으로 약 270만 개 상품의 카탈로그를 검색하고 후보를 확인한 뒤 조건에 맞는 상품을 추천한다. 문제당 두 번 표본을 생성한다는 설명에서 temperature 1.0은 서로 다른 검색어와 추론 경로를 탐색해 적어도 한 번 성공하는 문제를 늘리고 학습 궤적의 다양성을 확보하려는 선택이다. 다만 원문은 이 과정에서 총 850개 궤적을 얻는다고 적었으며, 이는 학습 문제 426개를 각각 두 번 실행한다는 수치와 산술적으로 일치하지 않아 실제 생성 개수는 확인이 필요하다.
6. 성공한 실행만 남기는 거부 샘플링
생성된 모든 실행을 그대로 학습하지 않고 ShoppingBench 자체 채점기가 작업을 해결한 것으로 판정한 궤적만 남기는 단계가 거부 샘플링이다. 이 방식에서는 교사가 항상 정답을 낼 필요는 없으며, 모방할 가치가 있는 성공 실행을 충분히 만들어낼 정도로 유능하면 된다는 논리를 따른다. 남겨진 궤적은 쇼핑 요청부터 검색·후보 확인·추천·종료에 이르기까지 각 단계의 추론과 도구 호출, 환경이 반환한 관측을 포함하는 완전한 에피소드다. 원문은 행동과 함께 추론도 보존하며, 이 추론이 학생의 성능을 교사에 가깝게 만드는 데 큰 역할을 한다고 뒤의 결과 절을 예고한다. 그러나 제공된 본문에는 해당 결과 절이나 비교 수치가 없으므로, 추론 포함의 효과는 여기서 제시된 주장과 설계 의도로 이해해야 하며 실제 성능 차이를 정량적으로 확인할 수는 없다.
7. 단계별 학습 행과 assistant에만 적용하는 손실
SeqKD 학습은 이미 존재하는 실행 궤적을 대상으로 하므로 학습 중 실제 도구를 호출하지 않으며, 모델이 다루는 것은 텍스트로 표현된 대화다. 각 궤적을 messages 형식으로 인코딩하고 학생 모델의 정확한 채팅 템플릿으로 렌더링해 학습 시 토큰 형식이 추론 시 생성 형식과 맞도록 한다. 하나의 궤적은 단계마다 별도의 학습 행으로 펼쳐지며, user에는 시스템 프롬프트와 지금까지의 대화를 넣고 assistant에는 해당 단계의 추론과 그에 따른 도구 호출을 정답으로 넣는다. 손실은 assistant에만 적용하므로 학생은 환경 관측을 예측하는 대신 주어진 이력에서 다음 추론과 행동을 생성하도록 학습한다. 이후 단계는 새 관측이 추가된 이력을 입력으로 사용하며 최종 recommend_product와 terminate 호출까지 같은 구조를 유지하고, 필터링 후 약 2,600개의 학습 행과 130개의 검증 행이 만들어진다고 설명한다.
8. 문제 단위 검증과 문맥 길이의 제약
학습·검증 데이터는 개별 행이 아니라 문제 단위로 나누어야 한다는 점이 데이터 인코딩 이후의 핵심 주의사항이다. 같은 문제에서 교사를 두 번 실행하고 각 궤적을 여러 단계의 행으로 펼치므로, 행 단위로 무작위 분할하면 거의 같은 문맥이 학습과 검증에 함께 들어갈 수 있기 때문이다. 원문은 전체 문제 중 약 5%를 통째로 검증용으로 보류해 이러한 유출을 막고 검증의 신뢰성을 확보하도록 설명한다. 반면 단계별 인코딩은 매번 길어지는 대화 이력을 다시 담기 때문에 문맥이 반복되며, 서버리스 미세조정은 dataset_max_len을 초과하는 내용을 잘라낸다는 제약이 있다. 제공된 본문은 이 길이 한도를 넘는 행에 관한 설명 도중 잘려 있어 구체적인 설정값이나 후속 대응을 확인할 수 없고, 실제 학생 평가 결과와 비용·지연 개선 수치도 제시된 범위에서는 판단할 수 없다.
🧾 핵심 주장 / 시사점
- SeqKD의 실용성은 교사의 내부 접근 권한보다 재사용 가능한 출력 데이터에 있다. API 전용 교사의 실행을 한 번 축적하면 서로 다른 학생 모델에 활용할 수 있다.
- ShoppingBench 채점기는 단순한 최종 평가 도구를 넘어 학습 데이터의 선별 기준으로 작동한다. 따라서 성공 판정의 신뢰성이 학생이 모방할 행동의 품질을 좌우한다.
- 문제 단위 분리와 dataset_max_len은 서로 다른 데이터 품질 문제를 다룬다. 전자는 검증 문맥의 유출을 막고, 후자는 단계별로 반복되는 긴 이력이 학습에 온전히 들어가는지에 영향을 준다.
✅ 액션 아이템
- GLM-5.3의 문제당 두 번 실행과 총 850개 궤적 수치를 학습 문제 426개 기준으로 대조해 불일치 확인.
- Qwen3.5-4B 학습 데이터의 문제 단위 분리, 정확한 채팅 템플릿 적용, dataset_max_len 초과 여부 점검.
- 보류한 ShoppingBench 평가 문제 324개에서 학생의 작업 성공 수준을 확인하고, 비용과 응답 시간 감소 여부 평가.
❓ 열린 질문
- 학습 문제 426개를 문제당 두 번 실행한다는 설명과 총 850개 궤적 사이의 차이는 무엇 때문인가?
- 단계별로 누적되는 대화 이력을 보존하려면 dataset_max_len을 어떻게 설정해야 하는가?
- 보류한 ShoppingBench 평가 문제 324개에서 Qwen3.5-4B는 GLM-5.3 대비 어느 정도의 품질을 유지하며 비용과 응답 시간을 얼마나 줄이는가?