Transformers documentation
빠른 시작
빠른 시작
Transformers는 누구나 transformer 모델로 학습을 시작하거나 모델을 구축할 수 있도록 빠르고 사용하기 쉽게 설계되었습니다.
사용자 대상 추상화는 모델을 인스턴스화하는 세 개의 클래스와 추론 또는 학습을 위한 두 개의 API로만 제한됩니다. 이 빠른 시작 가이드에서는 Transformers의 주요 기능을 소개하고, 다음을 수행하는 방법을 보여 줍니다:
설정
시작하기 전에 Hugging Face 계정을 만드는 것을 권장합니다. 계정을 사용하면 Hugging Face Hub에서 버전 관리되는 모델, 데이터셋, Spaces를 호스팅하고 접근할 수 있습니다. Hugging Face Hub는 탐색과 구축을 위한 협업 플랫폼입니다.
User Access Token을 생성하고 계정에 로그인하세요.
로그인 프롬프트가 표시되면 User Access Token을 notebook_login에 붙여넣으세요.
from huggingface_hub import notebook_login
notebook_login()huggingface_hub[cli] 패키지가 설치되어 있는지 확인하고 아래 명령을 실행하세요. 로그인할 때 prompted되면 User Access Token을 붙여넣으세요.
hf auth login
PyTorch를 설치합니다.
# remove ! if installing from the CLI
!pip install torch그 다음, Hugging Face 생태계에서 데이터셋과 비전 모델에 접근하고, 학습을 평가하며, 대규모 모델의 학습을 최적화하기 위한 Transformers의 최신 버전과 추가 라이브러리를 설치합니다.
# remove ! if installing from the CLI
!pip install -U transformers datasets evaluate accelerate timm에이전트 스킬
Hugging Face Skills는 코딩 에이전트가 Transformers를 다루는 방법을 학습시킵니다. 학습 스크립트를 직접 작성하는 대신, 에이전트에게 비전 모델의 파인튜닝을 요청하고 해당 스킬이 이를 안내하도록 하세요.
/plugin marketplace add huggingface/skills /plugin install hf-cli@huggingface/skills
codex plugin marketplace add huggingface/skills
이후 Codex에서 /plugins를 실행하고 huggingface/skills 저장소에서 스킬을 설치합니다.
Cursor, Gemini 등 더 많은 지원 플랫폼에 대해서는 설치 가이드를 참고하세요.
스킬이 설치되면, 코딩 에이전트에 대한 지침에 해당 스킬을 포함하세요.
Use the HF Trainer skill to fine-tune RT-DETRv2 on [Lekim89/sportsmot](https://huggingface.co/datasets/Lekim89/sportsmot) for basketball player tracking.사전 학습된 모델
각 사전 학습된 모델은 세 개의 기본 클래스를 상속합니다.
| 클래스 | 설명 |
|---|---|
| PreTrainedConfig | attention head 수나 어휘 크기처럼 모델의 속성을 지정하는 파일입니다. |
| PreTrainedModel | 설정 파일의 모델 속성으로 정의된 모델(또는 아키텍처)입니다. 사전 학습된 모델은 원시 hidden states만 반환합니다. 특정 작업을 수행하려면, 원시 hidden states를 의미 있는 결과로 변환하기 위해 적절한 모델 헤드를 사용해야 합니다(예: LlamaModel과 LlamaForCausalLM의 차이). |
| Preprocessor | 모델에 전달할 수 있는 수치형 입력으로 원시 입력(텍스트, 이미지, 오디오, 멀티모달)을 변환하는 클래스입니다. 예를 들어, PreTrainedTokenizer는 텍스트를 텐서로 변환하고 ImageProcessingMixin는 픽셀을 텐서로 변환합니다. |
모델과 전처리기를 로드할 때는 AutoClass API 사용을 권장합니다. 이 API는 사전 학습된 가중치와 구성 파일의 이름 또는 경로를 기반으로 각 작업과 머신러닝 프레임워크에 적합한 아키텍처를 자동으로 추론합니다.
from_pretrained()를 사용하여 Hub에서 가중치와 설정 파일을 모델 및 전처리 클래스로 로드합니다.
모델을 로드할 때, 모델이 최적의 상태로 로드되도록 다음 매개변수를 구성하세요.
device_map="auto"는 모델 가중치를 가장 빠른 장치에 우선적으로 할당합니다.dtype="auto"는 모델 가중치가 저장된 데이터 타입으로 가중치를 직접 초기화하여 가중치를 두 번 로드하는 것을 방지하는 데 도움이 될 수 있습니다(PyTorch는 기본적으로 가중치를torch.float32로 로드합니다).
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")토크나이저를 사용하여 텍스트를 토큰화하고 PyTorch 텐서를 반환합니다. 추론을 실행하기 전에 토큰화된 입력을 모델과 동일한 장치로 이동하여 모델이 이를 처리할 수 있도록 합니다.
model_inputs = tokenizer(["The secret to baking a good cake is "], return_tensors="pt").to(model.device)모델은 이제 추론 또는 학습을 위한 준비가 완료되었습니다.
추론을 위해 토큰화된 입력을 generate()에 전달하여 텍스트를 생성합니다. batch_decode()를 사용하여 토큰 ID를 다시 텍스트로 디코딩합니다.
generated_ids = model.generate(**model_inputs, max_length=30)
tokenizer.batch_decode(generated_ids)[0]
'<s> The secret to baking a good cake is 100% in the preparation. There are so many recipes out there,'모델을 파인튜닝하는 방법을 배우려면 Trainer 섹션으로 건너뛰세요.
Pipeline
Pipeline 클래스는 사전 학습된 모델로 추론을 실행하는 가장 편리한 방법입니다. 텍스트 생성, 이미지 분할, 자동 음성 인식, 문서 질의응답 등 다양한 작업을 지원합니다.
사용 가능한 작업의 전체 목록은 Pipeline API 참고 문서를 참조하세요.
Pipeline 객체를 생성하고 작업을 선택합니다. 기본적으로 Pipeline은 주어진 작업에 대한 기본 사전 학습 모델을 다운로드하고 캐시합니다. 특정 모델을 선택하려면 모델 이름을 model 매개변수에 전달합니다.
Accelerator를 사용하여 추론에 사용할 수 있는 가속기를 자동으로 감지합니다.
from transformers import pipeline
from accelerate import Accelerator
device = Accelerator().device
pipe = pipeline("text-generation", model="meta-llama/Llama-2-7b-hf", device=device)초기 텍스트를 입력하여 더 많은 텍스트를 생성하도록 Pipeline을 프롬프트합니다.
pipe("The secret to baking a good cake is ", max_length=50)
[{'generated_text': 'The secret to baking a good cake is 100% in the batter. The secret to a great cake is the icing.\nThis is why we’ve created the best buttercream frosting reci'}]Accelerator를 사용하여 추론에 사용할 수 있는 가속기를 자동으로 감지합니다.
from transformers import pipeline
from accelerate import Accelerator
device = Accelerator().device
pipeline = pipeline("image-segmentation", model="facebook/detr-resnet-50-panoptic", device=device)이미지 - URL 또는 로컬 경로 - 를 Pipeline에 전달합니다.

segments = pipeline("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
segments[0]["label"]
'bird'
segments[1]["label"]
'bird'Accelerator를 사용하여 추론에 사용할 수 있는 가속기를 자동으로 감지합니다.
from transformers import pipeline
from accelerate import Accelerator
device = Accelerator().device
pipeline = pipeline("automatic-speech-recognition", model="openai/whisper-large-v3", device=device)음성 파일을 Pipeline에 전달합니다.
pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")
{'text': ' He hoped there would be stew for dinner, turnips and carrots and bruised potatoes and fat mutton pieces to be ladled out in thick, peppered flour-fatten sauce.'}Trainer
Trainer는 PyTorch 모델을 위한 완전한 학습 및 평가 루프입니다. 수동으로 학습 루프를 작성할 때 일반적으로 필요한 많은 보일러플레이트 코드를 추상화하므로, 더 빠르게 학습을 시작하고 학습 설계 선택 사항에 집중할 수 있습니다. 데이터셋에서 배치 데이터를 구성하기 위해 모델, 데이터셋, 전처리 프로세서, 데이터 콜레이터만 있으면 됩니다.
TrainingArguments 클래스를 사용하여 학습 프로세스를 사용자 정의할 수 있습니다. 이 클래스는 학습, 평가 등을 위한 다양한 옵션을 제공합니다. 배치 크기, 학습률, 혼합 정밀도, torch.compile과 같은 학습 하이퍼파라미터 및 기능을 실험하여 학습 요구사항에 맞게 조정할 수 있습니다. 기본 학습 매개변수를 사용하여 빠르게 베이스라인을 생성하는 것도 가능합니다.
모델, 토크나이저, 학습용 데이터셋을 로드합니다.
from transformers import AutoModelForSequenceClassification, AutoTokenizer
from datasets import load_dataset
model = AutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased")
dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes")텍스트를 토큰화하고 PyTorch 텐서로 변환하는 함수를 생성합니다. 이 함수를 map 메서드를 사용하여 전체 데이터셋에 적용합니다.
def tokenize_dataset(dataset):
return tokenizer(dataset["text"])
dataset = dataset.map(tokenize_dataset, batched=True)데이터를 배치로 생성하기 위해 데이터 콜레이터를 로드하고 토크나이저를 전달합니다.
from transformers import DataCollatorWithPadding
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)다음으로, 학습 기능과 하이퍼파라미터를 사용하여 TrainingArguments를 설정합니다.
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="distilbert-rotten-tomatoes",
learning_rate=2e-5,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=2,
push_to_hub=True,
)마지막으로, 이 모든 개별 구성 요소를 Trainer에 전달하고 train()을 호출하여 시작합니다.
from transformers import Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["test"],
processing_class=tokenizer,
data_collator=data_collator,
)
trainer.train()push_to_hub()를 사용하여 모델과 토크나이저를 Hub에 공유하세요.
trainer.push_to_hub()
축하합니다! Transformers로 첫 번째 모델을 학습했습니다!
다음 단계
이제 Transformers와 그 기능에 대해 더 잘 이해하게 되셨으니, 가장 관심 있는 부분을 계속 탐색하고 학습할 때입니다.
- 기본 클래스: 설정, 모델 및 프로세서 클래스에 대해 자세히 알아봅니다. 이를 통해 모델을 생성하고 커스터마이징하는 방법, 다양한 유형의 입력(오디오, 이미지, 멀티모달)을 전처리하는 방법, 그리고 모델을 공유하는 방법을 이해할 수 있습니다.
- 추론: Pipeline을 더 깊이 살펴보고, LLM을 이용한 추론 및 채팅, 에이전트, 그리고 머신러닝 프레임워크와 하드웨어를 활용한 추론 최적화 방법을 알아봅니다.
- 학습: Trainer를 자세히 살펴보고, 분산 학습 및 특정 하드웨어에서 학습을 최적화하는 방법을 학습합니다.
- Quantization: 가중치를 더 적은 비트로 표현하여 메모리 및 저장 요구 사항을 줄이고 추론 속도를 높입니다.
- 리소스: 특정 작업을 위해 모델을 학습하고 추론하는 방법을 보여주는 끝에서 끝까지의 레시피를 찾고 계신가요? 작업별 레시피를 확인해 보세요!