ahassoun's picture
Upload 3018 files
ee6e328

A newer version of the Gradio SDK is available: 5.5.0

Upgrade

이념과 λͺ©ν‘œ [[philosophy]]

πŸ€— TransformersλŠ” λ‹€μŒκ³Ό 같은 λͺ©μ μœΌλ‘œ λ§Œλ“€μ–΄μ§„ λ…μžμ μΈ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€:

  • λŒ€κ·œλͺ¨ Transformers λͺ¨λΈμ„ μ‚¬μš©ν•˜κ±°λ‚˜ μ—°κ΅¬ν•˜κ±°λ‚˜ ν™•μž₯ν•˜λ €λŠ” 기계 ν•™μŠ΅ 연ꡬ원 및 ꡐ윑자λ₯Ό μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.
  • λͺ¨λΈμ„ λ―Έμ„Έ μ‘°μ •ν•˜κ±°λ‚˜ μ œμž‘μš©μœΌλ‘œ μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” μ‹€μ „ 개발자λ₯Ό μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.
  • νŠΉμ • 기계 ν•™μŠ΅ μž‘μ—…μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ‚¬μ „ν›ˆλ ¨λœ λͺ¨λΈμ„ λ‹€μš΄λ‘œλ“œν•˜κ³  μ‚¬μš©ν•˜κΈ°λ§Œ ν•˜λ €λŠ” μ—”μ§€λ‹ˆμ–΄λ₯Ό μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.

이 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 두 가지 μ£Όμš” λͺ©ν‘œλ₯Ό 가지고 μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€:

  1. μ‚¬μš©ν•˜κΈ° 쉽고 λΉ λ₯΄κ²Œ λ§Œλ“œλŠ” 것:
  • ν•™μŠ΅ν•΄μ•Ό ν•  μ‚¬μš©μž λŒ€μƒ μΆ”μƒν™”μ˜ 수λ₯Ό μ œν•œν–ˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ 거의 좔상화가 μ—†μœΌλ©°, 각 λͺ¨λΈμ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ μ„Έ 가지 ν‘œμ€€ 클래슀인 configuration, models 및 μ „μ²˜λ¦¬ 클래슀인 (tokenizerλŠ” NLP용, image processorλŠ” λΉ„μ „μš©, feature extractorλŠ” μ˜€λ””μ˜€μš©, processorλŠ” λ©€ν‹°λͺ¨λ‹¬ μž…λ ₯용)만 μ‚¬μš©ν•©λ‹ˆλ‹€.
  • μ΄λŸ¬ν•œ ν΄λž˜μŠ€λŠ” 곡톡적인 from_pretrained() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 미리 ν›ˆλ ¨λœ μΈμŠ€ν„΄μŠ€μ—μ„œ κ°„λ‹¨ν•˜κ³  ν†΅μΌλœ λ°©μ‹μœΌλ‘œ μ΄ˆκΈ°ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ©”μ†Œλ“œλŠ” 미리 ν›ˆλ ¨λœ μ²΄ν¬ν¬μΈνŠΈμ—μ„œ κ΄€λ ¨ 클래슀 μΈμŠ€ν„΄μŠ€μ™€ κ΄€λ ¨ 데이터(κ΅¬μ„±μ˜ ν•˜μ΄νΌνŒŒλΌλ―Έν„°, ν† ν¬λ‚˜μ΄μ €μ˜ μ–΄νœ˜, λͺ¨λΈμ˜ κ°€μ€‘μΉ˜)λ₯Ό (ν•„μš”ν•œ 경우) λ‹€μš΄λ‘œλ“œν•˜κ³  μΊμ‹œν•˜λ©° κ°€μ Έμ˜΅λ‹ˆλ‹€. μ²΄ν¬ν¬μΈνŠΈλŠ” Hugging Face Hubμ—μ„œ μ œκ³΅λ˜κ±°λ‚˜ μ‚¬μš©μž 자체의 μ €μž₯된 μ²΄ν¬ν¬μΈνŠΈμ—μ„œ μ œκ³΅λ©λ‹ˆλ‹€.
  • 이 μ„Έ 가지 κΈ°λ³Έ 클래슀 μœ„μ— λΌμ΄λΈŒλŸ¬λ¦¬λŠ” [pipeline] APIλ₯Ό μ œκ³΅ν•˜μ—¬ 주어진 μž‘μ—…μ— λŒ€ν•΄ λͺ¨λΈμ„ λΉ λ₯΄κ²Œ μΆ”λ‘ ν•˜λŠ” 데 μ‚¬μš©ν•˜κ³ , [Trainer]λ₯Ό μ œκ³΅ν•˜μ—¬ PyTorch λͺ¨λΈμ„ λΉ λ₯΄κ²Œ ν›ˆλ ¨ν•˜κ±°λ‚˜ λ―Έμ„Έ μ‘°μ •ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€(λͺ¨λ“  TensorFlow λͺ¨λΈμ€ Keras.fitκ³Ό ν˜Έν™˜λ©λ‹ˆλ‹€).
  • 결과적으둜, 이 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 신경망을 κ΅¬μΆ•ν•˜κΈ° μœ„ν•œ λͺ¨λ“ˆμ‹ 도ꡬ μƒμžκ°€ μ•„λ‹™λ‹ˆλ‹€. 라이브러리λ₯Ό ν™•μž₯ν•˜κ±°λ‚˜ κ΅¬μΆ•ν•˜λ €λ©΄ 일반적인 Python, PyTorch, TensorFlow, Keras λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜κ³  라이브러리의 κΈ°λ³Έ 클래슀λ₯Ό μƒμ†ν•˜μ—¬ λͺ¨λΈ λ‘œλ”© 및 μ €μž₯κ³Ό 같은 κΈ°λŠ₯을 μž¬μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. λͺ¨λΈμ— λŒ€ν•œ μ½”λ”© 철학에 λŒ€ν•΄ 더 μžμ„Ένžˆ μ•Œκ³  μ‹Άλ‹€λ©΄ Repeat Yourself λΈ”λ‘œκ·Έ 글을 ν™•μΈν•΄λ³΄μ„Έμš”.
  1. μ›λž˜ λͺ¨λΈκ³Ό κ°€λŠ₯ν•œ ν•œ κ·Όμ ‘ν•œ μ„±λŠ₯을 μ œκ³΅ν•˜λŠ” μ΅œμ‹  λͺ¨λΈμ„ μ œκ³΅ν•˜λŠ” 것:
  • 각 μ•„ν‚€ν…μ²˜μ— λŒ€ν•΄ 곡식 μ €μžκ°€ μ œκ³΅ν•œ κ²°κ³Όλ₯Ό μž¬ν˜„ν•˜λŠ” 적어도 ν•œ 가지 예제λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ½”λ“œλŠ” μ›λž˜ μ½”λ“œμ™€ κ°€λŠ₯ν•œ ν•œ μœ μ‚¬ν•˜κ²Œ μœ μ§€λ˜λ―€λ‘œ PyTorch μ½”λ“œλŠ” TensorFlow μ½”λ“œλ‘œ λ³€ν™˜λ˜μ–΄ pytorchicν•˜μ§€ μ•Šμ„ 수 있고, κ·Έ λ°˜λŒ€μ˜ κ²½μš°λ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€.

기타 λͺ©ν‘œ λͺ‡ 가지:

  • λͺ¨λΈμ˜ λ‚΄λΆ€λ₯Ό κ°€λŠ₯ν•œ μΌκ΄€λ˜κ²Œ λ…ΈμΆœμ‹œν‚€κΈ°:

    • 전체 은닉 μƒνƒœμ™€ μ–΄ν…μ…˜ κ°€μ€‘μΉ˜μ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό 단일 APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μ œκ³΅ν•©λ‹ˆλ‹€.
    • μ „μ²˜λ¦¬ 클래슀 및 κΈ°λ³Έ λͺ¨λΈ APIλŠ” λͺ¨λΈ 간에 μ‰½κ²Œ μ „ν™˜ν•  수 μžˆλ„λ‘ ν‘œμ€€ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • λ―Έμ„Έ μ‘°μ • 및 λͺ¨λΈ 탐색을 μœ„ν•œ μœ λ§ν•œ 도ꡬ듀을 μ£Όκ΄€μ μœΌλ‘œ μ„ νƒν•˜κΈ°:

    • λ―Έμ„Έ 쑰정을 μœ„ν•΄ μ–΄νœ˜ 및 μž„λ² λ”©μ— μƒˆλ‘œμš΄ 토큰을 κ°„λ‹¨ν•˜κ³  μΌκ΄€λœ λ°©μ‹μœΌλ‘œ μΆ”κ°€ν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.
    • Transformer ν—€λ“œλ₯Ό λ§ˆμŠ€ν‚Ήν•˜κ³  κ°€μ§€μΉ˜κΈ°ν•˜λŠ” κ°„λ‹¨ν•œ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • PyTorch, TensorFlow 2.0 및 Flax 간에 μ‰½κ²Œ μ „ν™˜ν•  수 μžˆλ„λ‘ ν•˜μ—¬ ν•˜λ‚˜μ˜ ν”„λ ˆμž„μ›Œν¬λ‘œ ν›ˆλ ¨ν•˜κ³  λ‹€λ₯Έ ν”„λ ˆμž„μ›Œν¬λ‘œ μΆ”λ‘ ν•  수 있게 ν•©λ‹ˆλ‹€.

μ£Όμš” κ°œλ… [[main-concepts]]

이 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 각 λͺ¨λΈμ— λŒ€ν•΄ μ„Έ 가지 μœ ν˜•μ˜ 클래슀λ₯Ό 기반으둜 κ΅¬μΆ•λ˜μ—ˆμŠ΅λ‹ˆλ‹€:

  • λͺ¨λΈ ν΄λž˜μŠ€λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ œκ³΅ν•˜λŠ” 사전 ν›ˆλ ¨λœ κ°€μ€‘μΉ˜μ™€ ν•¨κ»˜ μž‘λ™ν•˜λŠ” PyTorch λͺ¨λΈ(torch.nn.Module), Keras λͺ¨λΈ(tf.keras.Model), JAX/Flax λͺ¨λΈ(flax.linen.Module)일 수 μžˆμŠ΅λ‹ˆλ‹€.
  • ꡬ성 ν΄λž˜μŠ€λŠ” λͺ¨λΈμ„ κ΅¬μΆ•ν•˜λŠ” 데 ν•„μš”ν•œ ν•˜μ΄νΌνŒŒλΌλ―Έν„°(예: λ ˆμ΄μ–΄ 수 및 은닉 크기)λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€. ꡬ성 클래슀λ₯Ό 직접 μΈμŠ€ν„΄μŠ€ν™”ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. 특히, μˆ˜μ • 없이 κ³  사전 ν•™μŠ΅λœ λͺ¨λΈμ„ μ‚¬μš©ν•˜λŠ” 경우 λͺ¨λΈμ„ μƒμ„±ν•˜λ©΄ λͺ¨λΈμ˜ 일뢀인 ꡬ성을 μžλ™μœΌλ‘œ μΈμŠ€ν„΄μŠ€ν™”λ©λ‹ˆλ‹€.
  • μ „μ²˜λ¦¬ ν΄λž˜μŠ€λŠ” μ›μ‹œ 데이터λ₯Ό λͺ¨λΈμ΄ μˆ˜μš©ν•˜λŠ” ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€. TokenizerλŠ” 각 λͺ¨λΈμ˜ μ–΄νœ˜λ₯Ό μ €μž₯ν•˜κ³ , λ¬Έμžμ—΄μ„ 토큰 μž„λ² λ”© 인덱슀 리슀트둜 μΈμ½”λ”©ν•˜κ³  λ””μ½”λ”©ν•˜κΈ° μœ„ν•œ λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. Image processorsλŠ” λΉ„μ „ μž…λ ₯을 μ „μ²˜λ¦¬ν•˜κ³ , feature extractorsλŠ” μ˜€λ””μ˜€ μž…λ ₯을 μ „μ²˜λ¦¬ν•˜λ©°, processorλŠ” λ©€ν‹°λͺ¨λ‹¬ μž…λ ₯을 μ²˜λ¦¬ν•©λ‹ˆλ‹€.

λͺ¨λ“  μ΄λŸ¬ν•œ ν΄λž˜μŠ€λŠ” 사전 ν›ˆλ ¨λœ μΈμŠ€ν„΄μŠ€μ—μ„œ μΈμŠ€ν„΄μŠ€ν™”ν•˜κ³  둜컬둜 μ €μž₯ν•˜λ©°, μ„Έ 가지 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ Hubμ—μ„œ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • from_pretrained() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ 라이브러리 μžμ²΄μ—μ„œ μ œκ³΅ν•˜λŠ” 사전 ν›ˆλ ¨λœ 버전(μ§€μ›λ˜λŠ” λͺ¨λΈμ€ Model Hubμ—μ„œ 찾을 수 있음)μ΄λ‚˜ μ‚¬μš©μžκ°€ 둜컬둜 μ €μž₯ν•œ 경우(λ˜λŠ” μ„œλ²„μ— μ €μž₯ν•œ 경우)의 λͺ¨λΈ, ꡬ성 및 μ „μ²˜λ¦¬ 클래슀λ₯Ό μΈμŠ€ν„΄μŠ€ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • save_pretrained() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ¨λΈ, ꡬ성 및 μ „μ²˜λ¦¬ 클래슀λ₯Ό 둜컬둜 μ €μž₯ν•˜μ—¬ from_pretrained()λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μ‹œ κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • push_to_hub() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ¨λΈ, ꡬ성 및 μ „μ²˜λ¦¬ 클래슀λ₯Ό Hub에 κ³΅μœ ν•˜μ—¬ λͺ¨λ‘μ—κ²Œ μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.