본문으둜 κ±΄λ„ˆλ›°κΈ°
-
skycave's Blog
skycave's Blog
  • Home
  • Investment
  • IT
    • Data engineering
    • AI
    • Programing
  • Leisure
    • Camping
    • Fishing
  • Travel
    • Domestic
    • Overseas
  • Book
  • Product
  • Hot keyword in google
  • Home
  • Investment
  • IT
    • Data engineering
    • AI
    • Programing
  • Leisure
    • Camping
    • Fishing
  • Travel
    • Domestic
    • Overseas
  • Book
  • Product
  • Hot keyword in google
λ‹«κΈ°

검색

AI

[AI Paper] πŸ“„ Toolformer: Language Models Can Teach Themselves to Use Tools

By skycave
2026λ…„ 01μ›” 25일 8 Min Read
0

πŸ“„ Toolformer: Language Models Can Teach Themselves to Use Tools

πŸ“‹ 메타 정보

  • μ €μž: Timo Schick, Jane Dwivedi-Yu, Roberto Dessi, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, Thomas Scialom
  • κΈ°κ΄€: Meta AI Research, Universitat Pompeu Fabra (Roberto Dessi)
  • λ°œν‘œμ²˜: NeurIPS 2023 (Oral Presentation)
  • 연도: 2023 (arXiv: 2023λ…„ 2μ›” 9일)
  • arXiv: https://arxiv.org/abs/2302.04761
  • OpenReview: https://openreview.net/forum?id=Yacmpz84TH
  • NeurIPS Proceedings: https://proceedings.neurips.cc/paper_files/paper/2023/hash/d842425e4bf79ba039352da0f658a906-Abstract-Conference.html

🎯 ν•œμ€„ μš”μ•½

μžκΈ°μ§€λ„ν•™μŠ΅(Self-supervised Learning) λ°©μ‹μœΌλ‘œ μ–Έμ–΄ λͺ¨λΈμ΄ 슀슀둜 μ™ΈλΆ€ API 도ꡬ(계산기, 검색엔진, QA μ‹œμŠ€ν…œ λ“±)λ₯Ό μ–Έμ œ, μ–΄λ–»κ²Œ μ‚¬μš©ν• μ§€ ν•™μŠ΅ν•˜μ—¬, 6.7B λͺ¨λΈλ‘œλ„ 175B GPT-3λ₯Ό λŠ₯κ°€ν•˜λŠ” μ„±λŠ₯을 λ‹¬μ„±ν•œ 졜초의 λ²”μš©μ  도ꡬ ν•™μŠ΅ 연ꡬ.


πŸ” 연ꡬ λ°°κ²½ 및 동기

기쑴 문제점

  1. LLM의 역섀적 ν•œκ³„: λŒ€κ·œλͺ¨ μ–Έμ–΄ λͺ¨λΈ(LLM)은 few-shot ν•™μŠ΅μ—μ„œ λ›°μ–΄λ‚œ λŠ₯λ ₯을 λ³΄μ΄μ§€λ§Œ, μ—­μ„€μ μœΌλ‘œ λ‹¨μˆœν•œ μ‚°μˆ  μ—°μ‚°μ΄λ‚˜ 사싀 검색(factual lookup)μ—μ„œλŠ” 훨씬 μž‘κ³  λ‹¨μˆœν•œ νŠΉν™” λͺ¨λΈλ³΄λ‹€ μ„±λŠ₯이 떨어짐
  2. κΈ°μ‘΄ 도ꡬ μ‚¬μš© λ°©μ‹μ˜ ν•œκ³„:
    • λŒ€λŸ‰μ˜ 인간 감독(human supervision) ν•„μš”
    • νŠΉμ • νƒœμŠ€ν¬μ— λ§žμΆ€ν™”λœ few-shot ν”„λ‘¬ν”„νŒ… 방식
    • μ–΄λ–€ 도ꡬλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€ 사전에 μ•Œκ³  μžˆμ–΄μ•Ό 함
  3. μŠ€μΌ€μΌ μ˜μ‘΄μ„±: κ³„μ‚°μ΄λ‚˜ λ²ˆμ—­ 같은 μž‘μ—…μ„ LLM이 μˆ˜ν–‰ν•˜λ €λ©΄ 맀우 큰 규λͺ¨μ˜ λͺ¨λΈμ΄ ν•„μš”

μ™œ 이 연ꡬ가 ν•„μš”ν•œκ°€

  • 도ꡬ μ‚¬μš©μ„ 톡해 μž‘μ€ λͺ¨λΈλ‘œλ„ 큰 λͺ¨λΈ μˆ˜μ€€μ˜ μ„±λŠ₯ 달성 κ°€λŠ₯
  • 인간 감독 없이 자율적으둜 도ꡬ μ‚¬μš©λ²• ν•™μŠ΅
  • λ‹€μ–‘ν•œ 도ꡬλ₯Ό 상황에 맞게 μ„ νƒμ μœΌλ‘œ ν™œμš©ν•˜λŠ” λ²”μš©μ  접근법 ν•„μš”

핡심 섀계 원칙 (μ €μž 인용)

“도ꡬ μ‚¬μš©μ€ λŒ€λŸ‰μ˜ 인간 주석 없이 μžκΈ°μ§€λ„ λ°©μ‹μœΌλ‘œ ν•™μŠ΅λ˜μ–΄μ•Ό ν•œλ‹€. μ΄λŠ” λΉ„μš© 문제뿐만 μ•„λ‹ˆλΌ, 인간이 μœ μš©ν•˜λ‹€κ³  μƒκ°ν•˜λŠ” 것과 λͺ¨λΈμ΄ μœ μš©ν•˜λ‹€κ³  νŒλ‹¨ν•˜λŠ” 것이 λ‹€λ₯Ό 수 있기 λ•Œλ¬Έμ΄λ‹€.”

“LM은 μΌλ°˜μ„±μ„ μžƒμ§€ μ•Šμ•„μ•Ό ν•˜λ©°, μ–Έμ œ μ–΄λ–€ 도ꡬλ₯Ό μ–΄λ–»κ²Œ μ‚¬μš©ν• μ§€ 슀슀둜 κ²°μ •ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.”


πŸ’‘ 핡심 아이디어

μžκΈ°μ§€λ„ ν•™μŠ΅ 기반 도ꡬ μ‚¬μš©

Toolformer의 핡심은 μ–Έμ–΄ λͺ¨λΈμ΄ 슀슀둜 API ν˜ΈμΆœμ„ μƒμ„±ν•˜κ³ , 이 쀑 μœ μš©ν•œ κ²ƒλ§Œ ν•„ν„°λ§ν•˜μ—¬ ν•™μŠ΅ν•˜λŠ” 것이닀.

μ£Όμš” κ°œλ…

1. API 호좜 ν‘œν˜„ (API Call Representation)

[API_name(input) β†’ output]
  • 특수 토큰 [와 ]둜 API 호좜의 μ‹œμž‘κ³Ό 끝을 ν‘œμ‹œ
  • API ν˜ΈμΆœμ€ νŠœν”Œ ν˜•νƒœ: (API 이름, μž…λ ₯ νŒŒλΌλ―Έν„°)
  • μž…λ ₯κ³Ό 좜λ ₯ λͺ¨λ‘ ν…μŠ€νŠΈ μ‹œν€€μŠ€λ‘œ ν‘œν˜„
  • μ‹€μ œ κ΅¬ν˜„μ—μ„œλŠ” [, ], ->λ₯Ό 각각 <API>, </API>, β†’λ‘œ μ‚¬μš©

μ˜ˆμ‹œ:

"From this, we have 10 - 5 minutes = [Calculator(10 - 5) β†’ 5] 5 minutes."
"The capital of France is [QA(What is the capital of France?) β†’ Paris] Paris."

2. 5κ°€μ§€ 톡합 도ꡬ

도ꡬ μ„€λͺ… μš©λ„ μ‚¬μš© λΉ„μœ¨ (LAMA)
Calculator μˆ˜ν•™ μ—°μ‚° μˆ˜ν–‰ μ‚°μˆ  계산 98% (Math)
Q&A System Atlas 기반 μ§ˆμ˜μ‘λ‹΅ 사싀 확인 98.1% (LAMA)
Wikipedia Search μœ„ν‚€ν”Όλ””μ•„ 검색 정보 검색 QA νƒœμŠ€ν¬
Machine Translation 기계 λ²ˆμ—­ λ‹€κ΅­μ–΄ 처리 MLQA
Calendar λ‚ μ§œ/μ‹œκ°„ 정보 μ‹œκ°„ κ΄€λ ¨ 질의 TempLAMA

3. μœ μš©μ„± 기반 필터링 (Fitness Score) ⭐ 핡심 κΈ°μ—¬

  • API 호좜이 미래 토큰 μ˜ˆμΈ‘μ— 도움이 λ˜λŠ”μ§€ 평가
  • Perplexity(ν˜Όλž€λ„) κ°μ†Œλ₯Ό κΈ°μ€€μœΌλ‘œ μœ μš©ν•œ API 호좜만 선별
  • λ…Όλ¬Έμ˜ κ°€μž₯ μ€‘μš”ν•œ κΈ°μ—¬: λͺ¨λΈμ—κ²Œ μ‹€μ œλ‘œ 도움이 λ˜λŠ” API 호좜만 ν•™μŠ΅ 데이터에 포함

πŸ—οΈ μ•„ν‚€ν…μ²˜ / 방법둠

κΈ°λ³Έ λͺ¨λΈ 및 데이터

  • Base Model: GPT-J (6.7B parameters) – EleutherAI
  • ν•™μŠ΅ 데이터: CCNet (Common Crawl의 μ •μ œλœ 버전)의 λΆ€λΆ„μ§‘ν•©

전체 νŒŒμ΄ν”„λΌμΈ (4단계)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Toolformer Training Pipeline                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                  β”‚
β”‚  Step 1: Sampling                                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  CCNet      β”‚ -> β”‚ Few-shot     β”‚ -> β”‚ Candidate API   β”‚    β”‚
β”‚  β”‚  Dataset C  β”‚    β”‚ Prompting    β”‚    β”‚ Calls Generated β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚                                                                  β”‚
β”‚  Step 2: Executing                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚ Candidate APIs  β”‚ -> β”‚ Execute APIs & Get Results     β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”‚                                                                  β”‚
β”‚  Step 3: Filtering                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚ API + Results   β”‚ -> β”‚ Filter by Loss Reduction       β”‚     β”‚
β”‚  β”‚                 β”‚    β”‚ (L⁻ - L⁺ β‰₯ Ο„_f)               β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”‚                           ↓                                     β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚                    β”‚ Augmented      β”‚                          β”‚
β”‚                    β”‚ Dataset C*     β”‚                          β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β”‚                           ↓                                     β”‚
β”‚  Step 4: Fine-tuning                                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚           GPT-J Fine-tuned on C* β†’ Toolformer           β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Step 1: API 호좜 μƒ˜ν”Œλ§ (Sampling)

κ³Όμ •

  1. CCNet λ°μ΄ν„°μ…‹μ—μ„œ ν…μŠ€νŠΈ μΆ”μΆœ
  2. 각 도ꡬ별 νœ΄λ¦¬μŠ€ν‹±μœΌλ‘œ κ΄€λ ¨ ν…μŠ€νŠΈ 필터링
  3. Few-shot ν”„λ‘¬ν”„νŒ…μœΌλ‘œ API 호좜 후보 생성

μœ„μΉ˜ μƒ˜ν”Œλ§ λ©”μ»€λ‹ˆμ¦˜

  • 각 μœ„μΉ˜μ—μ„œ API 호좜 μ‹œμž‘ ν† ν°μ˜ ν™•λ₯  계산
  • μž„κ³„κ°’(Ο„_s) 이상인 μœ„μΉ˜λ“€μ„ ν›„λ³΄λ‘œ μ„ μ •
  • 각 μœ„μΉ˜μ—μ„œ μ΅œλŒ€ m개의 API 호좜 생성

νœ΄λ¦¬μŠ€ν‹± μ˜ˆμ‹œ (Calculator)

# Calculator λ„κ΅¬μš© ν…μŠ€νŠΈ 선별 쑰건
def is_calculator_relevant(text, window_size=100):
    # 100 토큰 μœˆλ„μš° λ‚΄ 3개 μ΄μƒμ˜ 숫자 포함
    # AND "=", "equals", "equal to", "total of", "average of" λ“± 포함
    return (count_numbers(text, window_size) >= 3 and
            contains_math_keywords(text))

Few-shot ν”„λ‘¬ν”„νŠΈ μ˜ˆμ‹œ

Input: The population of Tokyo is approximately 14 million people.
Output: The population of Tokyo is approximately [QA(What is the population of Tokyo?) β†’ 14 million] 14 million people.

Input: Calculate the total: 15 + 27 = 42
Output: Calculate the total: 15 + 27 = [Calculator(15 + 27) β†’ 42] 42

Step 2: API μ‹€ν–‰ (Executing)

μƒμ„±λœ λͺ¨λ“  API ν˜ΈμΆœμ„ μ‹€μ œλ‘œ μ‹€ν–‰ν•˜μ—¬ κ²°κ³Ό νšλ“

def execute_api_call(api_name, input_params):
    if api_name == "Calculator":
        return eval_math_expression(input_params)
    elif api_name == "QA":
        return qa_system.answer(input_params)  # Atlas 기반
    elif api_name == "WikiSearch":
        return wikipedia.search(input_params)
    elif api_name == "MT":
        return translation_system.translate(input_params)
    elif api_name == "Calendar":
        return get_current_date()

Step 3: 필터링 (Filtering) ⭐ 핡심 κΈ°μ—¬

핡심 μˆ˜μ‹: Loss 기반 필터링

L^+ = \sum_{j=i}^{n} w_j \cdot \log P(x_j | x_1, \ldots, x_{i-1}, c, r) L^- = \min(L^-_{\text{empty}}, L^-_{\text{no\_result}})

필터링 쑰건: L^- - L^+ \geq \tau_f

μ—¬κΈ°μ„œ:
– L+: API 호좜과 κ²°κ³Όλ₯Ό ν¬ν•¨ν–ˆμ„ λ•Œμ˜ 손싀
– L-_empty: API 호좜 없을 λ•Œμ˜ 손싀
– L-_no_result: API ν˜ΈμΆœμ€ μžˆμ§€λ§Œ κ²°κ³Όκ°€ 없을 λ•Œμ˜ 손싀
– Ο„_f: 필터링 μž„κ³„κ°’
– w_j: μœ„μΉ˜ 기반 κ°€μ€‘μΉ˜ (API 호좜 μœ„μΉ˜μ— κ°€κΉŒμšΈμˆ˜λ‘ λ†’μŒ)

직관적 해석

“빈 λ¬Έμžμ—΄μ΄λ‚˜ API κ²°κ³Ό 없이도 λ‹€μŒ 단어 예츑이 κ°€λŠ₯ν•˜λ‹€λ©΄, κ·Έ API ν˜ΈμΆœμ€ λΆˆν•„μš”ν•˜λ‹€. 였직 λͺ¨λΈμ—κ²Œ μ‹€μ œλ‘œ 도움이 λ˜λŠ” API 호좜만 ν•™μŠ΅ 데이터에 ν¬ν•¨ν•œλ‹€.”

Pseudo Code

def filter_api_calls(text, api_call, result, threshold=Ο„_f):
    # L+: API 호좜 + κ²°κ³Ό 포함 μ‹œ 손싀
    L_plus = compute_loss(text_with_api_and_result)

    # L-_empty: API 호좜 없을 λ•Œ 손싀
    L_minus_empty = compute_loss(text_without_api)

    # L-_no_result: API 호좜만 있고 κ²°κ³Ό 없을 λ•Œ 손싀
    L_minus_no_result = compute_loss(text_with_api_no_result)

    # L-λŠ” λ‘˜ 쀑 μ΅œμ†Œκ°’
    L_minus = min(L_minus_empty, L_minus_no_result)

    # 필터링 쑰건: 손싀 κ°μ†Œκ°€ μž„κ³„κ°’ 이상이면 μœ μ§€
    return (L_minus - L_plus) >= threshold

Step 4: νŒŒμΈνŠœλ‹ (Fine-tuning)

ν•™μŠ΅ μ„€μ •

ν•˜μ΄νΌνŒŒλΌλ―Έν„° κ°’
베이슀 λͺ¨λΈ GPT-J (6.7B)
배치 크기 128 (effective)
ν•™μŠ΅λ₯  1e-5
μ›œμ—… 처음 10% linear warmup
μ΅œλŒ€ μ‹œν€€μŠ€ 길이 1,024
APIλ‹Ή μ΅œλŒ€ μ˜ˆμ‹œ 수 25,000
데이터셋 CCNet λΆ€λΆ„μ§‘ν•© (API 호좜둜 augmented)

μΆ”λ‘ (Inference) 방식

  • API 토큰이 μƒμœ„ 10개 ν™•λ₯  토큰에 ν¬ν•¨λ˜λ©΄ API 호좜 μ‹œμž‘
  • μž…λ ₯λ‹Ή μ΅œλŒ€ 1개의 API 호좜둜 μ œν•œ
  • Zero-shot μ„€μ •, Greedy decoding μ‚¬μš©

πŸ“Š μ‹€ν—˜ 및 κ²°κ³Ό

평가 데이터셋

μΉ΄ν…Œκ³ λ¦¬ 데이터셋 μ„€λͺ…
LAMA SQuAD, GoogleRE, T-REx 사싀 μ™„μ„± νƒœμŠ€ν¬
Math ASDiv, SVAMP, MAWPS μˆ˜ν•™ 문제 풀이
QA Web Questions, Natural Questions, TriviaQA μ§ˆμ˜μ‘λ‹΅
Language Modeling WikiText, CCNet subset μ–Έμ–΄ λͺ¨λΈλ§
Multilingual QA MLQA λ‹€κ΅­μ–΄ μ§ˆμ˜μ‘λ‹΅
Temporal TempLAMA μ‹œκ°„ κ΄€λ ¨ μΆ”λ‘ 

비ꡐ λͺ¨λΈ ꡬ성

λͺ¨λΈ μ„€λͺ…
GPT-J κΈ°λ³Έ GPT-J, λ―Έμ„Έμ‘°μ • μ—†μŒ
GPT-J + CC CCNet으둜 λ―Έμ„Έμ‘°μ •, API 호좜 μ—†μŒ
Toolformer CCNet + API 호좜둜 λ―Έμ„Έμ‘°μ •
Toolformer (disabled) Toolformer와 동일, μΆ”λ‘  μ‹œ API λΉ„ν™œμ„±ν™”

μ£Όμš” κ²°κ³Ό

LAMA 벀치마크 μ„±λŠ₯

  • ToolformerλŠ” QA 도ꡬλ₯Ό 98.1% μΌ€μ΄μŠ€μ—μ„œ μ‚¬μš©
  • 0.7%만 λ‹€λ₯Έ 도ꡬ μ‚¬μš©, 1.2%λŠ” 도ꡬ λ―Έμ‚¬μš©
  • 동일 크기의 λͺ¨λ“  λ² μ΄μŠ€λΌμΈμ„ λͺ…ν™•νžˆ λŠ₯κ°€
  • GPT-3 (175B)와 경쟁적인 μ„±λŠ₯ 달성

μˆ˜ν•™ 벀치마크 μ„±λŠ₯ (ASDiv λ“±)

  • Calculator 도ꡬλ₯Ό 98%의 μƒ˜ν”Œμ—μ„œ μ‚¬μš©
  • OPT (66B)와 GPT-3 (175B)λ₯Ό 큰 차이둜 λŠ₯κ°€
  • 베이슀라인 λŒ€λΉ„ 각각 11.7, 5.2, 18.6 포인트 ν–₯상

Question Answering (WebQ, NQ, TriviaQA)

  • Wikipedia Search APIλ₯Ό μ‚¬μš©ν•΄ 99.3% 정확도 달성
  • GPT-J 기반 λͺ¨λΈλ“€ λŒ€λΉ„ 우수
  • 단, GPT-3 (175B)μ—λŠ” 미달 (검색 μ—”μ§„μ˜ λ‹¨μˆœμ„±κ³Ό μƒν˜Έμž‘μš© λΆˆκ°€ λ•Œλ¬Έ)

λͺ¨λΈ 크기별 도ꡬ μ‚¬μš© λŠ₯λ ₯

λͺ¨λΈ 크기 도ꡬ μ‚¬μš© 효과
124M 효과 μ—†μŒ
355M λ―Έλ―Έν•œ 효과
775M 도ꡬ μ‚¬μš© λŠ₯λ ₯ emergence
1.6B+ λͺ…ν™•ν•œ μ„±λŠ₯ ν–₯상

핡심 발견: 도ꡬ μ‚¬μš© λŠ₯λ ₯은 μ•½ 775M νŒŒλΌλ―Έν„°μ—μ„œ μΆœν˜„(emerge)함

μ–Έμ–΄ λͺ¨λΈλ§ μ„±λŠ₯ μœ μ§€

  • WikiText와 CCNet subsetμ—μ„œ perplexity 평가
  • Toolformerκ°€ κΈ°μ‘΄ μ–Έμ–΄ λͺ¨λΈλ§ λŠ₯λ ₯을 μ†μƒμ‹œν‚€μ§€ μ•ŠμŒ

πŸ’ͺ 강점 및 κΈ°μ—¬

1. μžκΈ°μ§€λ„ ν•™μŠ΅ (Self-Supervised Learning)

  • 인간 감독 μ΅œμ†Œν™”: 각 APIλ‹Ή μ†Œμˆ˜μ˜ demonstration만 ν•„μš”
  • μžλ™ 데이터 생성: λͺ¨λΈμ΄ 슀슀둜 ν•™μŠ΅ 데이터 생성 및 필터링

2. λ²”μš©μ„± (Generalizability)

  • 단일 λͺ¨λΈμ΄ λ‹€μ–‘ν•œ 도ꡬλ₯Ό 상황에 맞게 선택
  • νŠΉμ • νƒœμŠ€ν¬μ— μ’…μ†λ˜μ§€ μ•ŠλŠ” λ²”μš©μ  μ ‘κ·Ό

3. νš¨μœ¨μ„± (Efficiency)

  • 6.7B λͺ¨λΈλ‘œ 175B λͺ¨λΈ μ„±λŠ₯ 달성
  • 도ꡬ μ‚¬μš©μ„ ν†΅ν•œ compute-performance trade-off κ°œμ„ 

4. ν™•μž₯μ„± (Extensibility)

  • μƒˆλ‘œμš΄ 도ꡬ μΆ”κ°€κ°€ 용이
  • ν…μŠ€νŠΈ 기반 API μΈν„°νŽ˜μ΄μŠ€λ‘œ λ‹€μ–‘ν•œ 도ꡬ 톡합 κ°€λŠ₯

5. μ–Έμ–΄ λŠ₯λ ₯ 보쑴

  • 도ꡬ μ‚¬μš© ν•™μŠ΅ 후에도 κΈ°μ‘΄ μ–Έμ–΄ λͺ¨λΈλ§ λŠ₯λ ₯ μœ μ§€

6. 방법둠적 ν˜μ‹  (Fitness Score)

  • λ…Όλ¬Έμ˜ κ°€μž₯ μ€‘μš”ν•œ κΈ°μ—¬: 손싀 κ°μ†Œ 기반 API 호좜 필터링
  • λͺ¨λΈ κ΄€μ μ—μ„œ μœ μš©ν•œ 도ꡬ μ‚¬μš© νŒ¨ν„΄λ§Œ ν•™μŠ΅

⚠️ ν•œκ³„μ  및 ν–₯ν›„ 연ꡬ

μ£Όμš” ν•œκ³„μ 

1. 도ꡬ 체이닝 λΆˆκ°€ (No Tool Chaining)

λΆˆκ°€λŠ₯ν•œ μ˜ˆμ‹œ:
[Search(query)] β†’ result β†’ [Calculator(result)]
  • API 호좜이 λ…λ¦½μ μœΌλ‘œ μƒμ„±λ˜μ–΄ 체이닝 λΆˆκ°€
  • ν•œ λ„κ΅¬μ˜ 좜λ ₯을 λ‹€λ₯Έ λ„κ΅¬μ˜ μž…λ ₯으둜 μ‚¬μš©ν•  수 μ—†μŒ

2. μΈν„°λž™ν‹°λΈŒ λͺ¨λ“œ λΆ€μž¬

  • 검색 κ²°κ³Ό λΈŒλΌμš°μ§• λΆˆκ°€
  • 쿼리 μˆ˜μ •/κ°œμ„  λΆˆκ°€
  • μ—¬λŸ¬ 검색 κ²°κ³Ό 쀑 선택 λΆˆκ°€

3. μž…λ ₯ 민감성 (Input Sensitivity)

  • μ •ν™•ν•œ 문ꡬ(wording)에 따라 도ꡬ μ‚¬μš© 결정이 λ‹¬λΌμ§ˆ 수 있음

4. λΉ„μš© 인식 λΆ€μž¬

  • API 호좜의 계산 λΉ„μš©μ„ κ³ λ €ν•˜μ§€ μ•ŠμŒ
  • λΉ„μš© λŒ€λΉ„ 효용 μ΅œμ ν™” 미지원

5. λͺ¨λΈ 크기 μ œμ•½

  • μ΅œμ†Œ 775M νŒŒλΌλ―Έν„° μ΄μƒμ—μ„œλ§Œ 효과적
  • 더 μž‘μ€ λͺ¨λΈμ—μ„œλŠ” 도ꡬ μ‚¬μš© λŠ₯λ ₯ λΆ€μž¬

6. μΌλ°˜ν™” ν•œκ³„

  • ν•™μŠ΅ μ‹œ μ ‘ν•œ 도ꡬ에 κ΅­ν•œλœ μ‚¬μš© κ²½ν–₯
  • μƒˆλ‘œμš΄ λ„κ΅¬λ‘œμ˜ μΌλ°˜ν™” 미검증

7. 언어별 μ„±λŠ₯ 차이

  • CCNet 미세쑰정이 일뢀 μ–Έμ–΄μ—μ„œ μ„±λŠ₯ μ €ν•˜ 유발

ν–₯ν›„ 연ꡬ λ°©ν–₯ (μ €μž 인터뷰 기반)

1. 닀단계 도ꡬ 호좜 (Multi-step Tool Calling)

“λ‹€μŒ λͺ…λ°±ν•œ λ‹¨κ³„λŠ” μ—¬λŸ¬ 도ꡬ와 μ—¬λŸ¬ λ‹¨κ³„μ˜ ν˜ΈμΆœμ„ κ°–λŠ” 것이닀.” – Thomas Scialom

2. κΈ΄ λ¬Έλ§₯ 처리λ₯Ό μœ„ν•œ 도ꡬ ν™œμš©

  • Transformer의 μ»¨ν…μŠ€νŠΈ μœˆλ„μš° ν•œκ³„(4K-8K 토큰)λ₯Ό λ„κ΅¬λ‘œ 극볡

3. λͺ¨λΈ 자체λ₯Ό λ„κ΅¬λ‘œ μ‚¬μš© (Self-Reasoning)

“λͺ¨λΈ 자체λ₯Ό λ„κ΅¬λ‘œ μ‚Όμ•„ μΆ”λ‘  λͺ¨λ“œμ—μ„œ 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” 것에 관심이 μžˆλ‹€.” – Timo Schick

4. μΈν„°λž™ν‹°λΈŒ 도ꡬ μ‚¬μš©

  • 검색 κ²°κ³Ό 탐색 및 쿼리 κ°œμ„  지원

πŸ”— κ΄€λ ¨ λ…Όλ¬Έ

직접 κ΄€λ ¨ 연ꡬ (μ„ ν–‰)

λ…Όλ¬Έ 연도 νŠΉμ§•
TALM (Parisi et al.) 2022 Toolformer와 κ°€μž₯ μœ μ‚¬, μžκΈ°μ§€λ„ λͺ©μ ν•¨μˆ˜ μ‚¬μš©, λ‹€μš΄μŠ€νŠΈλ¦Ό λ―Έμ„Έμ‘°μ • μ„€μ • 탐ꡬ
WebGPT (Nakano et al.) 2021 μ›Ή λΈŒλΌμš°μ§•μ„ ν†΅ν•œ μ§ˆμ˜μ‘λ‹΅
LaMDA (Thoppilan et al.) 2022 λŒ€ν™”ν˜• AI의 도ꡬ μ‚¬μš©
PAL (Gao et al.) 2022 Program-Aided Language Models

후속 연ꡬ 및 κ΄€λ ¨ 연ꡬ

λ…Όλ¬Έ 연도 νŠΉμ§•
ReAct 2023 (ICLR) Thought-Act-Observe 사이클, Zero-shot ν”„λ‘¬ν”„νŠΈ 기반
Gorilla 2024 (NeurIPS) 1,600+ API 호좜 지원, LLaMA 기반 λ―Έμ„Έμ‘°μ •, ν• λ£¨μ‹œλ„€μ΄μ…˜ κ°μ†Œ
ToolLLM/ToolBench (Qin et al.) 2023 16,000+ API μŠ€μΌ€μΌμ—…, DFSDT μΆ”λ‘  μ „λž΅
HuggingGPT (Shen et al.) 2023 HuggingFace λͺ¨λΈ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜
Chameleon (Lu et al.) 2023 Plug-and-Play 도ꡬ μ‘°ν•©
ToolkenGPT 2023 도ꡬλ₯Ό ν† ν°μœΌλ‘œ ν‘œν˜„ν•˜λŠ” μ ‘κ·Ό
ART 2023 μžλ™ 닀단계 μΆ”λ‘  및 도ꡬ μ‚¬μš©

λΆ„λ₯˜ 체계

μΉ΄ν…Œκ³ λ¦¬ λ…Όλ¬Έ
Fine-tuning 기반 Toolformer, TALM, Gorilla, ToolRL, ToolkenGPT
Tuning-free (Zero-shot) ReAct, ToolAlpaca
RAG 증강 Gorilla (retrieval-augmented), ToolLLM

πŸ’» 싀무 적용 포인트

κ΅¬ν˜„ μ‹œ 고렀사항

1. API 호좜 ν˜•μ‹ μ •μ˜

# API 호좜 토큰 μ •μ˜
SPECIAL_TOKENS = {
    "api_start": "[",
    "api_end": "]",
    "result_sep": "β†’"
}

# μ˜ˆμ‹œ 포맷
def format_api_call(api_name, input_text, result=None):
    if result:
        return f"[{api_name}({input_text}) β†’ {result}]"
    return f"[{api_name}({input_text})]"

2. μƒˆλ‘œμš΄ 도ꡬ μΆ”κ°€ κ°€μ΄λ“œ

  1. Few-shot Prompt μž‘μ„±: ν•΄λ‹Ή API의 μ‚¬μš© μ˜ˆμ‹œ 5-10개 μž‘μ„±
  2. 데이터 μƒ˜ν”Œλ§: μ½”νΌμŠ€μ—μ„œ API 호좜 μ‚½μž… μœ„μΉ˜ μƒ˜ν”Œλ§
  3. 필터링: 손싀 κ°μ†Œ κΈ°μ€€μœΌλ‘œ μœ μš©ν•œ API 호좜만 선별
  4. λ―Έμ„Έμ‘°μ •: μ„ λ³„λœ λ°μ΄ν„°λ‘œ λͺ¨λΈ ν•™μŠ΅

3. 필터링 μž„κ³„κ°’ μ„€μ •

# λ…Όλ¬Έμ—μ„œ μ œμ•ˆν•œ κΈ°λ³Έκ°’
FILTER_THRESHOLD = 1.0  # Ο„_f

def should_keep_api_call(L_minus, L_plus, threshold=FILTER_THRESHOLD):
    return (L_minus - L_plus) >= threshold

4. 도ꡬ별 νœ΄λ¦¬μŠ€ν‹± κ΅¬ν˜„

TOOL_HEURISTICS = {
    "Calculator": {
        "min_numbers": 3,
        "window_size": 100,
        "keywords": ["=", "equals", "equal to", "total of", "average of"]
    },
    "QA": {
        "question_words": ["who", "what", "when", "where", "why", "how"]
    },
    # ... 기타 도ꡬ
}

5. μΆ”λ‘  μ‹œ API 호좜 처리

def inference_with_tools(model, prompt, tools):
    generated = model.generate(prompt)

    # API 호좜 토큰 감지 (μƒμœ„ 10개 ν™•λ₯  토큰에 포함 μ‹œ)
    if "[" in generated:
        api_call = extract_api_call(generated)
        result = execute_tool(api_call, tools)

        # κ²°κ³Ό μ‚½μž… ν›„ 계속 생성
        generated = generated.replace(
            f"[{api_call}]",
            f"[{api_call} β†’ {result}]"
        )
        generated += model.continue_generation(generated)

    return generated

μ˜€ν”ˆμ†ŒμŠ€ κ΅¬ν˜„μ²΄

  • lucidrains/toolformer-pytorch: https://github.com/lucidrains/toolformer-pytorch
  • conceptofmind/toolformer: https://github.com/conceptofmind/toolformer

ν”„λ‘œλ•μ…˜ 적용 μ‹œ 주의점

  1. μ΅œμ†Œ λͺ¨λΈ 크기: 775M νŒŒλΌλ―Έν„° 이상 ν•„μš” (도ꡬ μ‚¬μš© λŠ₯λ ₯ λ°œν˜„ μž„κ³„μ )
  2. API λ ˆμ΄ν„΄μ‹œ: μ™ΈλΆ€ API 호좜둜 μΈν•œ 응닡 μ§€μ—° κ³ λ €
  3. μ—λŸ¬ 핸듀링: API μ‹€νŒ¨ μ‹œ fallback μ „λž΅ ν•„μš”
  4. λΉ„μš© 관리: API 호좜 횟수 및 λΉ„μš© λͺ¨λ‹ˆν„°λ§
  5. 캐싱: 동일 쿼리에 λŒ€ν•œ κ²°κ³Ό μΊμ‹±μœΌλ‘œ νš¨μœ¨μ„± ν–₯상
  6. 토큰 섀계: κΈ°μ‘΄ ν† ν¬λ‚˜μ΄μ €μ™€ μΆ©λŒν•˜μ§€ μ•ŠλŠ” 특수 토큰 μ„ μ •

ν˜„λŒ€ μ—μ΄μ „νŠΈ ν”„λ ˆμž„μ›Œν¬μ™€μ˜ μ—°κ²°

  • LangChain: ReAct νŒ¨ν„΄ κ΅¬ν˜„, 도ꡬ 톡합
  • MetaGPT: 닀쀑 μ—μ΄μ „νŠΈ 도ꡬ μ‚¬μš©
  • Toolformer의 아이디어가 ν˜„λŒ€ LLM μ—μ΄μ „νŠΈμ˜ Function Calling κΈ°μ΄ˆκ°€ 됨

🏷️ Tags

#AIAgent #ToolUse #SelfSupervised #LLM #MetaAI #NeurIPS2023 #APIIntegration #LanguageModel #GPT-J #ZeroShot #ToolLearning #Toolformer #FunctionCalling #Calculator #Search #QA #FineTuning #DataAugmentation #LossFiltering


πŸ“š References

  1. Schick, T., et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023.
  2. arXiv: https://arxiv.org/abs/2302.04761
  3. OpenReview: https://openreview.net/forum?id=Yacmpz84TH
  4. Meta AI Publication: https://ai.meta.com/research/publications/toolformer-language-models-can-teach-themselves-to-use-tools/
μž‘μ„±μž

skycave

Follow Me
λ‹€λ₯Έ 기사
Previous

[AI Paper] πŸ“„ ToolLLM: Facilitating LLMs to Master 16000+ APIs

Next

[AI Paper] Towards Efficient and Robust Linguistic Emotion Diagnosis for Mental Health via Multi-Agent Instruction Refinement

λŒ“κΈ€ μ—†μŒ! 첫 λŒ“κΈ€μ„ λ‚¨κ²¨λ³΄μ„Έμš”.

λ‹΅κΈ€ 남기기 응닡 μ·¨μ†Œ

이메일 μ£Όμ†ŒλŠ” κ³΅κ°œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μˆ˜ ν•„λ“œλŠ” *둜 ν‘œμ‹œλ©λ‹ˆλ‹€

μ΅œμ‹ κΈ€

  • πŸ“Š 일일 λ‰΄μŠ€ 감성 리포트 – 2026-01-28
  • AI μ‹œμŠ€ν…œμ˜ λ¬Έλ§₯ 기반 검색(Contextual Retrieval) | Anthropic
  • “Think” 툴: Claudeκ°€ λ©ˆμΆ°μ„œ 생각할 수 μžˆλ„λ‘ ν•˜κΈ° | Anthropic
  • Claude Code λͺ¨λ²” 사둀 \ Anthropic
  • μš°λ¦¬κ°€ λ©€ν‹° μ—μ΄μ „νŠΈ 연ꡬ μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•œ 방법
Copyright 2026 — skycave's Blog. All rights reserved. Blogsy WordPress Theme