Tiny Agent
ABSTRACT
- LLM을 edge에 배포하는 것은 충분히 연구되지 않았다.
- 모델 사이즈, 연산량 요구가 커 클라우드 형태로 배포
- Tiny Agent
- 엣지에서 agentic 시스템 구동을 위한 태스크 특화적이고 함수 호출이 가능하게 SLM을 훈련 및 배포하는 end-to-end 프레임워트
- 효율적이 추론을 위해
- 새로운 툴 검색 기법 사용
- 입력 프롬프트 길이를 줄이기 위해
- 양자화 활용
- 추론 속도 증가
- 새로운 툴 검색 기법 사용
INTRODUCE
- LLM은 크기와 연산 요구량 때문에 클라우드 기반으로 배포
- 이와 관련된 LLM 적용에 대한 제한 사항
- 보안
- 이미지, 오디오, 텍스트 등의 데이터를 클라우드에 업로드
- 이는 개인정보에 문제가 될 수 있다
- 클라우드/와이파이 연결 필수
- 이는 항상 가능한 것이 아니다
- 레이턴시 증가
- 보안
- LLM을 로컬로 배포하기엔 너무 크다
- 특정 작업에 필요하지 않은 일반적인 정보들을 파라메트릭 메모리에 저장
- 이런 훈련 데이터가 파라메트릭 메모리에 저장되는 현상은 LLM에서 맥락 내 학습, 복잡한 추론이 가능하게 하는 것과 상관성이 있다
- 이는 모델 크기를 키우는 원인이 됨
-
작은 언어모델(SLM)이 더 큰 언어모델의 복잡한 추론, 맥락 내 학습 등의 현상을 모방하게 하는 것
-
이 프로젝트에서 일반적인 지식을 재호출 하는것이 필요하지 않은 특화되고 고품질의 데이터로 SLM을 학습시키면 작은 언어모델이 더 큰 언어모델을 모방하는 것이 가능
- 목표 : SLM 개발
- 엣지환경에서 자연어 질문을 이해할 수 있게 복잡한 추론 능력 유지
- 툴과 API를 조율 -> 유저 명령 수행
- 이를 위해 할 일
- 오픈소스 SLM 파인튜닝
- SLM은 function calling이 안되거나 능력이 떨어지는 경우 존재
- 튜닝을 위한 고품질의 데이터셋 설계
- 이 논문의 데이터셋을 이용하면 GPT4-Turbo보다 함수 호출 성능이 좋다
- 새로운 툴 RAG 기법과 양자화 적용
- 추론 효율 향상
- 오픈소스 SLM 파인튜닝
Tiny Agent
Teaching LLM to do Function Calling
- 관심사 : AI에이전트가 사람 명령을 function call 시퀀스로 해석
- 여기선 AI가 함수를 직접 작성할 필요가 없다
- 단지 함수를 불러오기만 함
- 모델이 해야할 일
- 어떤 함수를 불러올건지
- input 대응시키기
- 함수를 올바른 순서로 불러오기
- 여기선 AI가 함수를 직접 작성할 필요가 없다
- SLM이 함수 호출 수행하게 하기 위한 효율적인 방법 찾기
- LLMCompiler
- LLM이 호출해야할 함수들의 집합과, 각 함수의 입력 인자 및 그 의존 관계까지 포함한 함수 호출 계획을 출력하도록 지도하는 프레임워크
- 함수 호출 계획이 생성되면 함수 호출 계획 분석 및 의존성에 기초한 각각의 함수 호출 가능
- LLMCompiler
- LLMCompiler
- 복잡한 추론 능력을 지닌 큰 규모의 모델이 프롬프트에 대해 충분한 지도를 받았을 때 계획을 생성하도록 고려됨
- 더 작은 모델은 같은 방식으로 계획을 출력하지 못함
- 원인
- 작은 모델들의 근본적인 한계
- 일반적인 데이터셋으로 학습
- 주로 일반적인 벤치마크에서 좋은 정확도를 얻는 것에 초점을 맞춤
- 작은 모델들의 근본적인 한계
- 함수 호출과 계획에 대해 설별된 고품질의 데이터셋으로 파인튜닝은 목표 태스크에 대해 작은 모델의 정확도를 향상
Data Generation
- 이 논문에선 애플의 맥북이 유저의 day-to-day 태스크를 해결하는 로컬 agentic 시스템 고려
- 16가지 함수 사용
- 모델이 해야할 일은 위의 설명과 같이 태스크 완료를 위해 미리 정의된 API, 함수에 대해 호출 계획 수립 및 시행
- SLM을 학습시키고 테스트할 수 있는 데이터셋 필요
- 이 논문에선 LLM(챗GPT)를 활용해 데이터 생성
- 다양한 함수 셋 제공. 그 함수들을 이용해 태스크를 달성할 수 있는 현실적인 사용자 질의, 그에 수반되는 함수 호출 계획 및 입력 인자를 생성하도록 지시
- 생성된 데이터의 정당성을 확인하기 위해 함수 호출 계획에 통합된 상태를 검사
- 그들이 실행가능한 그래프를 형성하고 함수 이름과 입력 인자들이 정확한 지 확인하기 위해
- 500달러로 훈련, 검증, 테스트 데이터셋 8000개, 1000개, 1000개 생성
Fine-tuning for Improved Function Calling Reasoning
- 논문에서 사용한 파인튜닝 모델 : TinyLlama-1.1B(instruct-32K), Wizard-2-7B
- 파인튜닝에 앞서 성능 평가 지표 정의 필요
- 이 논문에서의 목적
- 모델이 정확하게 알맞은 계획을 생성
- 알맞은 함수 선택과 올바른 순서로 조율
- 모델이 정확하게 알맞은 계획을 생성
- 이 논문에서의 목적
- 평가
- 두가지 모두 충족 : 1
- 두가지 모두 충족 X : 0
- 의존성에 기반한 함수 호출 DAG 구축
- 함수 호출 조율이 맞는지 확인하기 위함
- 각각의 노드는 함수 호출, 노드 A -> B로 향하는 엣지는 상호의존성을 나타냄
- 의존성의 정확성을 검증하기 위해 이 DAG가 정답 계획의 DAG와 동일한지 비교
- 파인튜닝 방식
- LoRA 방식
- 에프크 : 3, 학습률 : 7e-5
- 파인튜닝 시 관련 없는 함수들을 추가한 네거티브 샘플 추가
- 알맞은 도구 선택을 가르치는데 효과적
- 따라서 post-training 성능을 향상시킨다
-
사용자의 질문이 어떻게 함수 호출 계획으로 바뀌는지에 대한 맥락 내 예시 포함
- 이런 튜닝을 통해 TinyAgent-1.1B 모델의 성공률 증가
- 12.71%에서 78.89%
- Wizard-2-7B 모델의 정확도 역시 증가
- 41.25% -> 83.09%