Spaces:
Paused
A newer version of the Gradio SDK is available:
5.23.3
Pull Requestμ λν κ²μ¬ [[checks-on-a-pull-request]]
π€ Transformersμμ Pull Requestλ₯Ό μ΄ λ, κΈ°μ‘΄μ μλ κ²μ λ§κ°λ¨λ¦¬μ§ μλμ§ νμΈνκΈ° μν΄ μλΉν μμ κ²μ¬κ° μ€νλ©λλ€. μ΄λ¬ν κ²μ¬λ λ€μκ³Ό κ°μ λ€ κ°μ§ μ νμΌλ‘ ꡬμ±λ©λλ€:
- μΌλ°μ μΈ ν μ€νΈ
- λ¬Έμ λΉλ
- μ½λ λ° λ¬Έμ μ€νμΌ
- μΌλ° μ μ₯μ μΌκ΄μ±
μ΄ λ¬Έμμμλ μ΄λ¬ν λ€μν κ²μ¬μ κ·Έ μ΄μ λ₯Ό μ€λͺ νκ³ , PRμμ νλ μ΄μμ κ²μ¬κ° μ€ν¨ν κ²½μ° λ‘컬μμ μ΄λ»κ² λλ²κ·Ένλμ§ μμλ³΄κ² μ΅λλ€.
μ°Έκ³ λ‘, μ΄λ¬ν κ²μ¬λ₯Ό μ¬μ©νλ €λ©΄ κ°λ° μ€μΉκ° νμν©λλ€:
pip install transformers[dev]
λλ Transformers μ μ₯μ λ΄μ νΈμ§ κ°λ₯ν μ€μΉκ° νμν©λλ€:
pip install -e .[dev]
Transformersμ μ νμ μ’ μμ± μκ° λ§μ΄ λμ΄λ¬κΈ° λλ¬Έμ κ°λ° μ€μΉλ₯Ό μ€ν¨ν μλ μμ΅λλ€. κ°λ° μ€μΉκ° μ€ν¨νλ κ²½μ°, μμ μ€μΈ Deep Learning νλ μμν¬ (PyTorch, TensorFlow λ°/λλ Flax)λ₯Ό μ€μΉνκ³ λ€μ λͺ λ Ήμ μ€ννμΈμ.
pip install transformers[quality]
νΈμ§ κ°λ₯ν μ€μΉμ κ²½μ°λ λ€μ λͺ λ Ήμ μ€ννμΈμ.
pip install -e .[quality]
ν μ€νΈ [[tests]]
ci/circleci: run_tests_
λ‘ μμνλ λͺ¨λ μμ
μ Transformers ν
μ€νΈ λͺ¨μμ μΌλΆλ₯Ό μ€νν©λλ€. μ΄λ¬ν μμ
μ νΉμ νκ²½μμ μΌλΆ λΌμ΄λΈλ¬λ¦¬μ μ€μ μ λ‘λλ€. μλ₯Ό λ€μ΄ ci/circleci: run_tests_pipelines_tf
λ TensorFlowλ§ μ€μΉλ νκ²½μμ νμ΄νλΌμΈ ν
μ€νΈλ₯Ό μ€νν©λλ€.
ν μ€νΈ λͺ¨λμμ μ€μ λ‘ λ³κ²½ μ¬νμ΄ μμ λ ν μ€νΈλ₯Ό μ€ννμ§ μκΈ° μν΄, ν μ€νΈ λͺ¨μμ μΌλΆλ§ μ€νλ©λλ€. λΌμ΄λΈλ¬λ¦¬μ λ³κ²½ μ νμ λν μ°¨μ΄λ₯Ό νμΈνκΈ° μν΄ μ νΈλ¦¬ν°κ° μ€νλκ³ , ν΄λΉ μ°¨μ΄μ μν₯μ λ°λ ν μ€νΈκ° μ νλ©λλ€. μ΄ μ νΈλ¦¬ν°λ λ‘컬μμ λ€μκ³Ό κ°μ΄ μ€νν μ μμ΅λλ€:
python utils/tests_fetcher.py
Transformers μ μ₯μμ μ΅μλ¨μμ μ€νν©λλ€. μ΄ μ νΈλ¦¬ν°λ λ€μκ³Ό κ°μ μμ μ μνν©λλ€:
- λ³κ²½ μ¬νμ΄ μλ νμΌλ§λ€ λ³κ²½ μ¬νμ΄ μ½λμΈμ§ μ£Όμ λλ λ¬Έμ λ¬Έμμ΄μΈμ§ νμΈν©λλ€. μ€μ μ½λ λ³κ²½μ΄ μλ νμΌλ§ μ μ§λ©λλ€.
- μμ€ μ½λ νμΌμ κ° νμΌμ λν΄ μ¬κ·μ μΌλ‘ μν₯μ μ£Όλ λͺ¨λ νμΌμ μ 곡νλ λ΄λΆ 맡μ μμ±ν©λλ€. λͺ¨λ Bκ° λͺ¨λ Aλ₯Ό κ°μ Έμ€λ©΄ λͺ¨λ Aλ λͺ¨λ Bμ μν₯μ μ€λλ€. μ¬κ·μ μΈ μν₯μλ κ° λͺ¨λμ΄ μ΄μ λͺ¨λμ κ°μ Έμ€λ λͺ¨λ 체μΈμ΄ νμν©λλ€.
- λ¨κ³ 1μμ μμ§ν νμΌμ μ΄ λ§΅μ μ μ©νμ¬ PRμ μν₯μ λ°λ λͺ¨λΈ νμΌ λͺ©λ‘μ μ»μ΅λλ€.
- κ° νμΌμ ν΄λΉνλ ν μ€νΈ νμΌμ 맀ννκ³ μ€νν ν μ€νΈ λͺ©λ‘μ κ°μ Έμ΅λλ€.
λ‘컬μμ μ€ν¬λ¦½νΈλ₯Ό μ€ννλ©΄ λ¨κ³ 1, 3 λ° 4μ κ²°κ³Όλ₯Ό μΆλ ₯νμ¬ μ€νλλ ν
μ€νΈλ₯Ό μ μ μμ΅λλ€. μ€ν¬λ¦½νΈλ λν test_list.txt
λΌλ νμΌμ μμ±νμ¬ μ€νν ν
μ€νΈ λͺ©λ‘μ ν¬ν¨νλ©°, λ€μ λͺ
λ ΉμΌλ‘ ν΄λΉ ν
μ€νΈλ₯Ό λ‘컬μμ μ€νν μ μμ΅λλ€:
python -m pytest -n 8 --dist=loadfile -rA -s $(cat test_list.txt)
μλͺ»λ μ¬νμ΄ λλ½λμμ κ²½μ°, μ 체 ν μ€νΈ λͺ¨μλ λ§€μΌ μ€νλ©λλ€.
λ¬Έμ λΉλ [[documentation-build]]
build_pr_documentation
μμ
μ λ¬Έμλ₯Ό λΉλνκ³ λ―Έλ¦¬ 보기λ₯Ό μμ±νμ¬ PRμ΄ λ³ν©λ ν λͺ¨λ κ²μ΄ μ λλ‘ λ³΄μ΄λμ§ νμΈν©λλ€. λ‘λ΄μ PRμ λ¬Έμ 미리보기 λ§ν¬λ₯Ό μΆκ°ν©λλ€. PRμμ λ§λ λ³κ²½ μ¬νμ μλμΌλ‘ 미리보기μ μ
λ°μ΄νΈλ©λλ€. λ¬Έμ λΉλμ μ€ν¨ν κ²½μ° μΈλΆ μ 보λ₯Ό ν΄λ¦νμ¬ μ΄λμμ λ¬Έμ κ° λ°μνλμ§ νμΈν μ μμ΅λλ€. μ€λ₯λ μ£Όλ‘ toctree
μ λλ½λ νμΌκ³Ό κ°μ΄ κ°λ¨ν μ€λ₯μ
λλ€.
λ‘컬μμ λ¬Έμλ₯Ό λΉλνκ±°λ 미리 λ³Ό κ²½μ°, docs ν΄λμ README.md
λ₯Ό μ°Έμ‘°νμΈμ.
μ½λ λ° λ¬Έμ μ€νμΌ [[code-and-documentation-style]]
black
κ³Ό ruff
λ₯Ό μ¬μ©νμ¬ λͺ¨λ μμ€ νμΌ, μμ λ° ν
μ€νΈμ μ½λ νμμ μ μ©ν©λλ€. λν, utils/style_doc.py
μμ λ¬Έμ λ¬Έμμ΄κ³Ό rst
νμΌμ νμ, κ·Έλ¦¬κ³ Transformersμ __init__.py
νμΌμμ μ€νλλ μ§μ°λ μν¬νΈμ μμμ λν μ¬μ©μ μ μ λκ΅¬κ° μμ΅λλ€. μ΄ λͺ¨λ κ²μ λ€μμ μ€νν¨μΌλ‘μ¨ μ€νν μ μμ΅λλ€:
make style
CIλ μ΄λ¬ν μ¬νμ΄ ci/circleci: check_code_quality
κ²μ¬ λ΄μμ μ μ©λμλμ§ νμΈν©λλ€. λν ruff
λ μ€νλλ©°, μ μλμ§ μμ λ³μλ μ¬μ©λμ§ μμ λ³μλ₯Ό λ°κ²¬νλ©΄ κ²½κ³ ν©λλ€. μ΄ κ²μ¬λ₯Ό λ‘컬μμ μ€ννλ €λ©΄ λ€μμ μ¬μ©νμΈμ:
make quality
μ΄ μμ μ λ§μ μκ°μ΄ μμλ μ μμΌλ―λ‘ νμ¬ λΈλμΉμμ μμ ν νμΌμ λν΄μλ§ λμΌν μμ μ μ€ννλ €λ©΄ λ€μμ μ€ννμΈμ.
make fixup
μ΄ λͺ λ Ήμ νμ¬ λΈλμΉμμ μμ ν νμΌμ λν λͺ¨λ μΆκ°μ μΈ κ²μ¬λ μ€νν©λλ€. μ΄μ μ΄λ€μ μ΄ν΄λ³΄κ² μ΅λλ€.
μ μ₯μ μΌκ΄μ± [[repository-consistency]]
μ΄λ PRμ΄ μ μ₯μλ₯Ό μ μμ μΈ μνλ‘ μ μ§νλμ§ νμΈνλ λͺ¨λ ν
μ€νΈλ₯Ό λͺ¨μ κ²μ΄λ©°, ci/circleci: check_repository_consistency
κ²μ¬μμ μνλ©λλ€. λ€μμ μ€νν¨μΌλ‘μ¨ λ‘컬μμ μ΄ κ²μ¬λ₯Ό μ€νν μ μμ΅λλ€.
make repo-consistency
μ΄ κ²μ¬λ λ€μμ νμΈν©λλ€.
- initμ μΆκ°λ λͺ¨λ κ°μ²΄κ° λ¬Έμνλμλμ§ (
utils/check_repo.py
μμ μν) __init__.py
νμΌμ λ μΉμ μ λμΌν λ΄μ©μ΄ μλμ§ (utils/check_inits.py
μμ μν)- λ€λ₯Έ λͺ¨λμμ 볡μ¬λ μ½λκ° μλ³Έκ³Ό μΌμΉνλμ§ (
utils/check_copies.py
μμ μν) - λͺ¨λ κ΅¬μ± ν΄λμ€μ docstringμ μΈκΈλ μ ν¨ν 체ν¬ν¬μΈνΈκ° μ μ΄λ νλ μλμ§ (
utils/check_config_docstrings.py
μμ μν) - λͺ¨λ κ΅¬μ± ν΄λμ€κ° ν΄λΉνλ λͺ¨λΈλ§ νμΌμμ μ¬μ©λλ μμ±λ§ ν¬ν¨νκ³ μλμ§ (
utils/check_config_attributes.py
μμ μν) - READMEμ λ¬Έμ μΈλ±μ€μ λ²μμ΄ λ©μΈ READMEμ λμΌν λͺ¨λΈ λͺ©λ‘μ κ°μ§κ³ μλμ§ (
utils/check_copies.py
μμ μν) - λ¬Έμμ μλ μμ±λ ν
μ΄λΈμ΄ μ΅μ μνμΈμ§ (
utils/check_table.py
μμ μν) - λΌμ΄λΈλ¬λ¦¬μλ μ νμ μ’
μμ±μ΄ μ€μΉλμ§ μμλλΌλ λͺ¨λ κ°μ²΄κ° μ¬μ© κ°λ₯νμ§ (
utils/check_dummies.py
μμ μν)
μ΄λ¬ν κ²μ¬κ° μ€ν¨νλ κ²½μ°, μ²μ λ κ°μ§ νλͺ©μ μλμΌλ‘ μμ ν΄μΌ νλ©°, λλ¨Έμ§ λ€ κ°μ§ νλͺ©μ λ€μ λͺ λ Ήμ μ€ννμ¬ μλμΌλ‘ μμ ν μ μμ΅λλ€.
make fix-copies
μΆκ°μ μΈ κ²μ¬λ μλ‘μ΄ λͺ¨λΈμ μΆκ°νλ PRμ λν κ²μΌλ‘, μ£Όλ‘ λ€μκ³Ό κ°μ΅λλ€:
- μΆκ°λ λͺ¨λ λͺ¨λΈμ΄ Auto-mappingμ μλμ§ (
utils/check_repo.py
μμ μν) - λͺ¨λ λͺ¨λΈμ΄ μ¬λ°λ₯΄κ² ν
μ€νΈλμλμ§ (
utils/check_repo.py
μμ μν)
볡μ¬λ³Έ νμΈ [[check-copies]]
Transformers λΌμ΄λΈλ¬λ¦¬λ λͺ¨λΈ μ½λμ λν΄ λ§€μ° μκ³ νλ©°, κ° λͺ¨λΈμ λ€λ₯Έ λͺ¨λΈμ μμ‘΄νμ§ μκ³ μμ ν λ¨μΌ νμΌλ‘ ꡬνλμ΄μΌ ν©λλ€. μ΄λ κ² νκΈ° μν΄ νΉμ λͺ¨λΈμ μ½λ 볡μ¬λ³Έμ΄ μλ³Έκ³Ό μΌκ΄λ μνλ‘ μ μ§λλμ§ νμΈνλ λ©μ»€λμ¦μ μΆκ°νμ΅λλ€. λ°λΌμ λ²κ·Έ μμ μ΄ νμν κ²½μ° λ€λ₯Έ λͺ¨λΈμ μν₯μ μ£Όλ λͺ¨λ λͺ¨λΈμ λ³Ό μ μμΌλ©° μμ μ μ μ©ν μ§ μμ λ μ¬λ³Έμ μμ ν μ§ μ νν μ μμ΅λλ€.
νμΌμ΄ λ€λ₯Έ νμΌμ μμ ν μ¬λ³ΈμΈ κ²½μ° ν΄λΉ νμΌμ utils/check_copies.py
μ FULL_COPIES
μμμ λ±λ‘ν΄μΌ ν©λλ€.
μ΄ λ©μ»€λμ¦μ # Copied from xxx
νμμ μ£Όμμ κΈ°λ°μΌλ‘ ν©λλ€. xxx
μλ μλμ 볡μ¬λλ ν΄λμ€ λλ ν¨μμ μ 체 κ²½λ‘κ° ν¬ν¨λμ΄μΌ ν©λλ€. μλ₯Ό λ€μ΄ RobertaSelfOutput
μ BertSelfOutput
ν΄λμ€μ 볡μ¬λ³Έμ
λλ€. λ°λΌμ μ¬κΈ°μμ μ£Όμμ΄ μμ΅λλ€:
# Copied from transformers.models.bert.modeling_bert.BertSelfOutput
ν΄λμ€ μ 체μ μμ μ μ μ©νλ λμ μ 볡μ¬λ³Έκ³Ό κ΄λ ¨μλ λ©μλμ μ μ©ν μλ μμ΅λλ€. μλ₯Ό λ€μ΄ μ¬κΈ°μμ RobertaPreTrainedModel._init_weights
κ° BertPreTrainedModel
μ λμΌν λ©μλμμ 볡μ¬λ κ²μ λ³Ό μ μμΌλ©° ν΄λΉ μ£Όμμ΄ μμ΅λλ€:
# Copied from transformers.models.bert.modeling_bert.BertPreTrainedModel._init_weights
볡μ¬λ³Έμ΄ μ΄λ¦λ§ λ€λ₯Έ κ²½μ°κ° μμ΅λλ€: μλ₯Ό λ€μ΄ RobertaAttention
μμ BertSelfAttention
λμ RobertaSelfAttention
μ μ¬μ©νμ§λ§ κ·Έ μΈμλ μ½λκ° μμ ν λμΌν©λλ€: μ΄ λ # Copied from
μ Copied from xxx with foo->bar
μ κ°μ κ°λ¨ν λ¬Έμμ΄ λ체λ₯Ό μ§μν©λλ€. μ΄λ λͺ¨λ foo
μΈμ€ν΄μ€λ₯Ό bar
λ‘ λ°κΏμ μ½λλ₯Ό 볡μ¬ν©λλ€. μ¬κΈ°μμ μ΄λ»κ² μ¬μ©λλμ§ λ³Ό μ μμ΅λλ€:
# Copied from transformers.models.bert.modeling_bert.BertAttention with Bert->Roberta
νμ΄ν μ£Όλ³μλ κ³΅λ°±μ΄ μμ΄μΌ ν©λλ€(κ³΅λ°±μ΄ λ체 ν¨ν΄μ μΌλΆμΈ κ²½μ°λ μμΈμ λλ€).
λ체 ν¨ν΄μ μΌνλ‘ κ΅¬λΆνμ¬ μ¬λ¬ ν¨ν΄μ μΆκ°ν μ μμ΅λλ€. μλ₯Ό λ€μ΄ CamemberForMaskedLM
μ λ κ°μ§ λ체 μ¬νμ κ°μ§ RobertaForMaskedLM
μ 볡μ¬λ³Έμ
λλ€: Roberta
λ₯Ό Camembert
λ‘ λ체νκ³ ROBERTA
λ₯Ό CAMEMBERT
λ‘ λ체ν©λλ€. μ¬κΈ°μμ μ΄κ²μ΄ μ£ΌμμΌλ‘ μ΄λ»κ² ꡬνλμλμ§ νμΈν μ μμ΅λλ€:
# Copied from transformers.models.roberta.modeling_roberta.RobertaForMaskedLM with Roberta->Camembert, ROBERTA->CAMEMBERT
μμκ° μ€μν κ²½μ°(μ΄μ μμ κ³Ό μΆ©λν μ μλ κ²½μ°) μμ μ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ μ€νλ©λλ€.
μ λ³κ²½μ΄ μμμ λ³κ²½νλ κ²½μ°(짧μ μ΄λ¦μ λ§€μ° κΈ΄ μ΄λ¦μΌλ‘ λ°κΎΈλ κ²½μ°) μλ μμ μ§μ κΈ°λ₯Ό μ μ©ν ν 볡μ¬λ³Έμ΄ κ²μ¬λ©λλ€.
ν¨ν΄μ λμλ¬Έμκ° λ€λ₯Έ κ²½μ°(λλ¬Έμμ μλ¬Έμκ° νΌμ©λ λ체 μμ) all-casing
μ΅μ
μ μΆκ°νλ λ°©λ²λ μμ΅λλ€. μ¬κΈ°μμ MobileBertForSequenceClassification
μμ μ¬μ©λ μμλ₯Ό λ³Ό μ μμ΅λλ€:
# Copied from transformers.models.bert.modeling_bert.BertForSequenceClassification with Bert->MobileBert all-casing
μ΄ κ²½μ°, μ½λλ λ€μκ³Ό κ°μ΄ 볡μ¬λ©λλ€:
MobileBert
μμBert
λ‘(μ:MobileBertModel
μ initμμ μ¬μ©ν λ)mobilebert
μμbert
λ‘(μ:self.mobilebert
λ₯Ό μ μν λ)MOBILEBERT
μμBERT
λ‘(MOBILEBERT_INPUTS_DOCSTRING
μμμμ)