Transformers documentation
철학
철학
Transformers는 PyTorch를 최우선으로 하는 라이브러리입니다. 해당 논문과 충실하게 일치하며, 사용이 쉽고 수정이 용이한 모델을 제공합니다.
예제, 시각화 및 타임라인을 포함한 더 길고 심층적인 아티클은 여기에서 공식 참고 자료로 확인할 수 있습니다.
우리의 철학은 실천을 통해 진화합니다. 아래는 현재 안정적으로 유지되고 있는 원칙들입니다.
이 라이브러리의 대상
- 모델 아키텍처를 탐색하거나 확장하는 연구자 및 교육자.
- 모델을 파인튜닝, 평가 또는 서빙하는 실무자.
- 예측 가능한 API로 “그냥 작동하는” 사전 학습 모델을 원하는 엔지니어
기대할 수 있는 것
각 모델에는 세 가지 핵심 클래스가 필요합니다: configuration, models, 그리고 전처리 클래스. Tokenizers는 NLP를, image processors는 이미지를, video processors는 영상을, feature extractors는 오디오를, processors는 멀티모달 입력을 처리합니다.
이 모든 클래스는 Hugging Face Hub에 제공되는 사전 학습된 체크포인트 또는 사용자가 저장한 체크포인트에서 관련 클래스 인스턴스와 연관된 데이터(설정 하이퍼파라미터, 토크나이저 어휘, 프로세서 파라미터, 모델 가중치)를 다운로드(필요한 경우), 캐시 및 로드하는 공통
from_pretrained()메서드를 사용하여 사전 학습된 인스턴스에서 간단하고 통일된 방식으로 초기화할 수 있습니다.On top of those three base classes, the library provides two APIs: pipeline() for quickly using a model for inference on a given task and Trainer to quickly train or fine-tune a PyTorch model.
핵심 원칙
다음 원칙들은 시간이 지나며 확립되었으며, 새로운 철학 블로그 게시물에 자세히 설명되어 있습니다. 이 원칙들은 PR 및 기여를 검토할 때 유지보수자의 의사결정을 안내합니다.
- 신뢰할 수 있는 출처. 구현은 공식 결과와 의도된 동작에 충실해야 합니다.
- 하나의 모델, 하나의 파일. 사용자가 읽는 모델 파일에서 핵심 추론/학습 로직을 상단부터 하단까지 한눈에 확인할 수 있습니다.
- 코드가 곧 제품입니다. 가독성과 diff 확인에 최적화하세요. 교묘한 간접 참조보다 명시적인 이름을 선호하세요.
- 추상화하지 말고 표준화하세요. 모델에 특화된 동작은 모델에 유지하세요. 공유 인터페이스는 범용 인프라에만 사용하세요.
- DRY*(사용자에게 도움이 될 때 반복). 최종 사용자 모델링 파일은 자체적으로 완결성을 유지합니다. 인프라는 분리됩니다.
- 최소한의 사용자 API. 코드 경로가 적고, kwargs가 예측 가능하며, 메서드가 안정적입니다.
- 하위 호환성. 공개된 인터페이스는 깨져서는 안 됩니다. 기존 Hub 아티팩트는 계속 작동해야 합니다.
- 일관된 공개 인터페이스. 이름, 출력, 선택적 진단 항목이 정렬되어 있으며 테스트가 수행됩니다.
주요 클래스
Configuration 클래스는 모델을 구축하는 데 필요한 하이퍼파라미터를 저장합니다. 여기에는 레이어 수와 hidden size가 포함됩니다. 항상 직접 인스턴스를 생성할 필요는 없습니다. 수정 없이 사전 학습된 모델을 사용할 경우, 모델을 생성하는 과정에서 configuration이 자동으로 인스턴스화됩니다.
모델 클래스는 torch.nn.Module인 PyTorch 모델이며, 최소한 PreTrainedModel로 감싸져 있습니다.
모듈형 transformers. 기여자는 기존 구성 요소의 재사용을 선언하는 작은
modular_*.py샤드를 작성합니다. 라이브러리는 이를 사용자가 읽거나 디버깅하는 가시적인modeling_*.py파일로 자동으로 확장합니다. 유지보수자는 샤드를 검토하고, 사용자는 확장된 파일을 수정합니다. 이를 통해 보일러플레이트 드리프트 없이 “One Model, One File” 원칙을 유지합니다. 자세한 내용은 기여 문서를 참조하세요.Preprocessing 클래스는 원시 데이터를 모델이 받아들일 수 있는 형식으로 변환합니다. tokenizer는 각 모델의 어휘를 저장하고, 문자열을 토큰 임베딩 인덱스 목록으로 인코딩 및 디코딩하는 메서드를 제공합니다. Image processor는 비전 입력을, video processor는 비디오 입력을, feature extractor는 오디오 입력을, processor는 멀티모달 입력을 전처리합니다.
이 모든 클래스는 사전 학습된 인스턴스에서 생성할 수 있으며, 로컬에 저장하고 Hub에 공유할 수 있습니다. 이를 위한 세 가지 메서드는 다음과 같습니다:
from_pretrained()는 라이브러리 자체에서 제공하는 사전 학습 버전(Model Hub에서 지원되는 모델을 확인할 수 있습니다) 또는 사용자가 로컬(또는 서버)에 저장한 버전에서 모델, 구성, 전처리 클래스를 인스턴스화할 수 있게 해 줍니다.save_pretrained()를 사용하면 모델, 설정, 전처리 클래스를 로컬에 저장하여from_pretrained()로 다시 로드할 수 있습니다.push_to_hub()을 사용하면 모델, 구성, 전처리 클래스를 Hub에 공유하여 누구나 쉽게 접근할 수 있습니다.