Tiny Agent 논문 리뷰


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 기법과 양자화 적용
        • 추론 효율 향상

Tiny Agent

Teaching LLM to do Function Calling

  • 관심사 : AI에이전트가 사람 명령을 function call 시퀀스로 해석
    • 여기선 AI가 함수를 직접 작성할 필요가 없다
      • 단지 함수를 불러오기만 함
    • 모델이 해야할 일
      • 어떤 함수를 불러올건지
      • input 대응시키기
      • 함수를 올바른 순서로 불러오기
  • SLM이 함수 호출 수행하게 하기 위한 효율적인 방법 찾기
    • LLMCompiler
      • LLM이 호출해야할 함수들의 집합과, 각 함수의 입력 인자 및 그 의존 관계까지 포함한 함수 호출 계획을 출력하도록 지도하는 프레임워크
      • 함수 호출 계획이 생성되면 함수 호출 계획 분석 및 의존성에 기초한 각각의 함수 호출 가능
  • 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%