Transformers documentation

용어집

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

용어집

이 용어집은 일반적인 기계 학습 및 🤗 Transformers 용어를 정의하여 문서 이해를 돕기 위해 작성되었습니다.

A

attention mask

attention mask는 시퀀스를 배치로 묶을 때 사용하는 선택적 인자입니다.

이 인수는 모델이 어떤 토큰에 주의를 기울여야 하고 어떤 토큰은 무시해야 하는지를 나타냅니다.

예를 들어, 다음 두 시퀀스를 고려해 보겠습니다:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence_a = "This is a short sequence."
>>> sequence_b = "This is a rather long sequence. It is at least longer than the sequence A."

>>> encoded_sequence_a = tokenizer(sequence_a)["input_ids"]
>>> encoded_sequence_b = tokenizer(sequence_b)["input_ids"]

인코딩된 버전은 길이가 다릅니다:

>>> len(encoded_sequence_a), len(encoded_sequence_b)
(8, 19)

따라서 이들을 그대로 동일한 tensor에 담을 수 없습니다. 첫 번째 시퀀스를 두 번째 시퀀스의 길이까지 패딩해야 하거나, 두 번째 시퀀스를 첫 번째 시퀀스의 길이로 잘라야 합니다.

첫 번째 경우, ID 목록은 패딩 인덱스로 확장됩니다. 토크나이저에 목록을 전달하고 다음과 같이 패딩을 요청할 수 있습니다:

>>> padded_sequences = tokenizer([sequence_a, sequence_b], padding=True)

첫 번째 문장의 오른쪽에 0이 추가되어 두 번째 문장과 길이가 같아진 것을 확인할 수 있습니다:

>>> padded_sequences["input_ids"]
[[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]

이후 PyTorch에서 텐서로 변환할 수 있습니다. 어텐션 마스크는 패딩된 인덱스의 위치를 나타내는 바이너리 텐서로, 모델이 해당 위치에 어텐션을 하지 않도록 합니다. BertTokenizer의 경우 1은 어텐션해야 할 값을, 0은 패딩된 값을 나타냅니다. 이 어텐션 마스크는 토크나이저가 반환하는 딕셔너리의 “attention_mask” 키 아래에 있습니다:

>>> padded_sequences["attention_mask"]
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

오토인코딩 모델

인코더 모델과 마스크 언어 모델링을 참조하세요.

자기 회귀 모델

causal language modeling 및 decoder models를 참조하세요.

B

backbone

backbone은 원시 hidden states 또는 features를 출력하는 네트워크(embeddings와 layers)입니다. 보통 head에 연결되며, head는 features를 입력으로 받아 예측을 수행합니다. 예를 들어, ViTModel은 상단에 특정 head가 없는 backbone입니다. DPT와 같은 다른 모델들도 ViTModel을 backbone으로 사용할 수 있습니다.

C

causal language modeling

모델이 텍스트를 순서대로 읽으며 다음 단어를 예측해야 하는 사전 학습 작업입니다. 보통 문장 전체를 읽되, 모델 내부에서 특정 타임스텝의 미래 토큰을 가리기 위한 마스크를 사용하여 수행합니다.

채널

컬러 이미지는 빨강, 초록, 파랑(RGB) 세 채널의 값 조합으로 구성되며, 회색 이미지는 채널이 하나만 있습니다. 🤗 Transformers에서 채널은 이미지의 텐서에서 첫 번째 차원이거나 마지막 차원이 될 수 있습니다: [n_channels, height, width] 또는 [height, width, n_channels].

연결주의 시간 분류(CTC)

입력과 출력이 정확히 어떻게 정렬되어 있는지 알지 못해도 모델이 학습할 수 있도록 하는 알고리즘입니다. CTC는 주어진 입력에 대해 모든 가능한 출력의 분포를 계산하고, 그중 가장 가능성이 높은 출력을 선택합니다. 화자의 발화 속도 차이 등 다양한 이유로 음성 데이터가 전사본과 항상 깔끔하게 정렬되지 않기 때문에, CTC는 음성 인식 작업에서 널리 사용됩니다.

합성곱

신경망에서 입력 행소를 더 작은 행소(커널 또는 필터)와 요소별로 곱한 후 그 값을 새로운 행소에 합산하는 레이어의 유형입니다. 이는 컨볼루션 연산으로 알려져 있으며, 입력 행소의 전체에 걸쳐 반복됩니다. 각 연산은 입력 행소의 서로 다른 세그먼트에 적용됩니다. 컨볼루션 신경망(CNN)은 컴퓨터 비전 분야에서 널리 사용됩니다.

D

DataParallel (DP)

여러 GPU에서 학습을 수행하기 위한 병렬화 기법으로, 동일한 설정을 여러 번 복제하고 각 인스턴스에 서로 다른 데이터 슬라이스를 할당합니다. 처리는 병렬로 수행되며, 모든 설정은 각 학습 단계의 끝에서 동기화됩니다.

DataParallel에 대해 자세히 알아보세요.

디코더 입력 ID

이 입력은 인코더-디코더 모델에 특화되어 있으며, 디코더에 전달될 입력 ID를 포함합니다. 이러한 입력은 번역이나 요약과 같은 시퀀스-투-시퀀스 작업에 사용해야 하며, 일반적으로 각 모델에 특화된 방식으로 구성됩니다.

대부분의 인코더-디코더 모델(BART, T5)은 labels로부터 decoder_input_ids를 자체적으로 생성합니다. 이러한 모델에서는 학습을 처리하는 데 labels를 전달하는 것이 권장되는 방식입니다.

시퀀스 투 시퀀스 학습에서 이러한 입력 ID를 처리하는 방법은 각 모델의 문서를 확인하세요.

디코더 모델

또한 자기회귀 모델이라고도 불리는 디코더 모델은 모델이 텍스트를 순서대로 읽으며 다음 단어를 예측해야 하는 사전 학습 작업(인과적 언어 모델링이라고 함)을 포함합니다. 이는 일반적으로 특정 시간 단계에서 미래 토큰을 가리기 위해 마스크를 적용하여 문장 전체를 읽는 방식으로 수행됩니다.

딥 러닝(DL)

여러 개의 레이어를 가진 신경망을 사용하는 기계 학습 알고리즘.

E

인코더 모델

또한 오토인코딩 모델이라고도 불리는 인코더 모델은 텍스트나 이미지와 같은 입력을 받아 임베딩(embedding)이라고 불리는 압축된 수치 표현으로 변환합니다. 인코더 모델은 종종 masked language modeling과 같은 기법을 사용하여 사전 학습되며, 이 기법은 입력 시퀀스의 일부를 마스킹하여 모델이 더 의미 있는 표현을 생성하도록 강제합니다.

F

feature extraction

기계 학습 알고리즘에 대해 더 정보적이고 유용한 특징(feature) 집합으로 원시 데이터를 선택하고 변환하는 과정입니다. 특징 추출의 예로는 원시 텍스트를 워드 임베딩으로 변환하거나 이미지/비디오 데이터에서 가장자리나 형태와 같은 중요한 특징을 추출하는 것이 있습니다.

피드 포워드 청킹

transformers의 각 residual attention block에서 self-attention 레이어는 일반적으로 2개의 feed forward 레이어 뒤에 위치합니다. feed forward 레이어의 intermediate embedding size는 모델의 hidden size보다 큰 경우가 많습니다(예: google-bert/bert-base-uncased).

크기가 [batch_size, sequence_length]인 입력에 대해, 중간 feed forward 임베딩 [batch_size, sequence_length, config.intermediate_size]을 저장하는 데 필요한 메모리는 전체 메모리 사용량의 상당한 부분을 차지할 수 있습니다. Reformer: The Efficient Transformer의 저자들은 sequence_length 차원에 대한 계산이 독립적이라는 점에 주목하여, 두 feed forward 레이어의 출력 임베딩 [batch_size, config.hidden_size]_0, ..., [batch_size, config.hidden_size]_n을 개별적으로 계산한 뒤 n = sequence_length일 때 [batch_size, sequence_length, config.hidden_size]로 concat하는 것이 수학적으로 동등하다고 지적했습니다. 이 방법은 계산 시간 증가를 대가로 메모리 사용량을 줄이지만, 수학적으로 동등한 결과를 제공합니다.

apply_chunking_to_forward() 함수를 사용하는 모델에서 chunk_size는 병렬로 계산되는 출력 임베딩의 수를 정의하며, 이는 메모리와 시간 복잡도 사이의 트레이드오프를 결정합니다. chunk_size가 0으로 설정되면 피드 포워드 청킹이 수행되지 않습니다.

파인튜닝된 모델

Finetuning은 사전 학습된 모델을 가져와 가중치를 고정하고, 출력 계층을 새로 추가된 model head로 교체하는 전이 학습의 한 형태입니다. 모델 헤드는 대상 데이터셋에서 학습됩니다.

자세한 내용은 사전 학습된 모델 파인튜닝 튜토리얼을 참고하고, 🤗 Transformers로 모델을 파인튜닝하는 방법을 배워보세요.

H

head

모델 헤드는 원시 히든 상태를 받아 다른 차원으로 투영하는 신경망의 마지막 레이어를 가리킵니다. 각 작업마다 서로 다른 모델 헤드가 있습니다. 예를 들어:

I

이미지 패치

Vision-based Transformers 모델은 이미지를 더 작은 패치로 분할한 후 이를 선형 임베딩으로 변환하고, 시퀀스로 모델에 전달합니다. 모델의 patch_size, 즉 해상도는 해당 모델의 구성 파일에서 확인할 수 있습니다.

추론

Inference is the process of evaluating a model on new data after training is complete. See the Pipeline for inference tutorial to learn how to perform inference with 🤗 Transformers.

입력 ID

입력 id는 모델에 전달해야 하는 필수 입력 매개변수 중 유일하게 필요한 경우가 많습니다. 이는 시퀀스를 구성하는 토큰의 수치적 표현인 토큰 인덱스이며, 모델이 입력으로 사용하는 시퀀스를 만듭니다.

각 토크나이저는 동작 방식이 다르지만 기본 메커니즘은 동일합니다. WordPiece 토크나이저인 BERT 토크나이저를 사용한 예시를 살펴보겠습니다.

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence = "A Titan RTX has 24GB of VRAM"

토크나이저는 토크나이저 어휘에 포함된 토큰으로 시퀀스를 분할하는 역할을 담당합니다.

>>> tokenized_sequence = tokenizer.tokenize(sequence)

토큰은 단어 또는 서브워드입니다. 예를 들어, “VRAM”은 모델 어휘에 없었기 때문에 “V”, “RA”, “M”으로 분리되었습니다. 이러한 토큰이 서로 다른 단어가 아니라 같은 단어의 일부임을 나타내기 위해 “RA”와 “M”에는 이중 해시 접두사가 추가됩니다:

>>> print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']

이 토큰은 모델이 이해할 수 있는 ID로 변환할 수 있습니다. 이는 문장을 토크나이저에 직접 전달하여 수행할 수 있으며, 🤗 Tokenizers의 Rust 구현을 활용하여 최적의 성능을 제공합니다.

>>> inputs = tokenizer(sequence)

토크나이저는 해당 모델이 정상적으로 작동하는 데 필요한 모든 인수를 포함하는 사전(dict)을 반환합니다. 토큰 인덱스는 input_ids 키 아래에 있습니다:

>>> encoded_sequence = inputs["input_ids"]
>>> print(encoded_sequence)
[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]

토크나이저는 관련 모델이 이를 사용하는 경우 모델이 때때로 사용하는 특수 ID인 “special tokens”를 자동으로 추가한다는 점에 유의하세요.

이전 id 시퀀스를 디코딩하면,

>>> decoded_sequence = tokenizer.decode(encoded_sequence)

확인해 보겠습니다

>>> print(decoded_sequence)
[CLS] A Titan RTX has 24GB of VRAM [SEP]

이것이 BertModel이 입력을 기대하는 방식이기 때문입니다.

L

labels

labels는 모델이 손실을 직접 계산하도록 하기 위해 전달할 수 있는 선택적 인자입니다. 이 labels는 모델의 예상 예측값이어야 합니다. 모델은 표준 손실을 사용하여 자신의 예측값과 예상 값(즉, label) 사이의 손실을 계산합니다.

이 레이블은 모델 헤드에 따라 다르며, 예를 들어 다음과 같습니다:

  • 시퀀스 분류 모델(BertForSequenceClassification)의 경우, 모델은 (batch_size) 차원의 텐서를 기대하며, 배치의 각 값은 해당 시퀀스 전체에 대한 예상 라벨을 나타냅니다.
  • 토큰 분류 모델(BertForTokenClassification)의 경우, 모델은 각 값이 개별 토큰의 예상 라벨에 대응하는 (batch_size, seq_length) 차원의 텐서를 기대합니다.
  • 마스크 언어 모델링(BertForMaskedLM)의 경우, 모델은 각 값이 개별 토큰의 예상 라벨에 대응하는 차원 (batch_size, seq_length)의 텐서를 기대합니다. 여기서 라벨은 마스크된 토큰의 토큰 ID이며, 나머지 값은 무시됩니다(보통 -100).
  • 시퀀스 투 시퀀스 작업의 경우, (BartForConditionalGeneration, MBartForConditionalGeneration) 모델은 각 값이 입력 시퀀스별로 연관된 대상 시퀀스에 대응하는 (batch_size, tgt_seq_length) 차원의 텐서를 기대합니다. 학습 중에는 BART와 T5 모두 내부적으로 적절한 decoder_input_ids와 디코더 어텐션 마스크를 생성합니다. 일반적으로 이를 별도로 제공할 필요가 없습니다. 이는 Encoder-Decoder 프레임워크를 활용하는 모델에는 적용되지 않습니다.
  • 이미지 분류 모델(ViTForImageClassification)의 경우, 모델은 (batch_size) 차원의 텐서를 기대하며, 배치의 각 값은 개별 이미지에 해당하는 예상 라벨을 나타냅니다.
  • 의미 분할 모델(SegformerForSemanticSegmentation)의 경우, 모델은 (batch_size, height, width) 차원의 텐서를 기대하며, 배치의 각 값은 개별 픽셀에 대한 예상 라벨에 해당합니다.
  • 객체 감지 모델(DetrForObjectDetection)의 경우, 모델은 class_labels 및 boxes 키를 가진 사전의 목록을 입력으로 기대합니다. 여기서 배치의 각 값은 개별 이미지에 대한 예상 라벨과 바운딩 박스의 수를 나타냅니다.
  • 자동 음성 인식 모델(Wav2Vec2ForCTC)의 경우, 모델은 각 값이 개별 토큰의 예상 라벨에 대응하는 (batch_size, target_length) 차원의 텐서를 기대합니다.

각 모델의 라벨은 다를 수 있으므로, 특정 라벨에 대한 자세한 정보는 해당 모델의 문서를 반드시 확인하세요!

기본 모델(BertModel)은 레이블을 받지 않습니다. 이는 기본 transformer 모델로, 단순히 features를 출력하기 때문입니다.

대형 언어 모델(LLM)

대량의 데이터로 학습된 transformer 언어 모델(GPT-3, BLOOM, OPT)을 지칭하는 일반적인 용어입니다. 이러한 모델은 학습 가능한 매개변수의 수가 매우 많은 경향이 있습니다(예: GPT-3의 경우 1,750억 개).

M

마스크 언어 모델링(MLM)

모델이 텍스트의 손상된 버전을 보고 원래 텍스트를 예측해야 하는 사전 학습 작업입니다. 일반적으로 일부 토큰을 무작위로 마스킹하여 수행합니다.

멀티모달

텍스트를 다른 유형의 입력(예: 이미지)과 결합하는 작업.

N

자연어 생성(NLG)

텍스트 생성과 관련된 모든 작업(예: Write With Transformers, 번역).

자연어 처리(NLP)

“텍스트를 처리한다”는 일반적인 표현입니다.

자연어 이해(NLU)

텍스트에 포함된 내용을 이해하는 것과 관련된 모든 작업(예: 전체 텍스트 또는 개별 단어 분류).

P

pipeline

🤗 Transformers의 pipeline은 데이터를 전처리하고 변환한 후 모델로부터 예측을 반환하기 위해 특정 순서로 실행되는 일련의 단계를 가리키는 추상화입니다. pipeline에서 발견할 수 있는 단계의 예로는 데이터 전처리, 특징 추출, 정규화가 있습니다.

자세한 내용은 추론용 파이프라인을 참조하세요.

PipelineParallel(PP)

여러 GPU에 걸쳐 모델을 세로(레이어 수준)로 분할하는 병렬화 기법으로, 단일 GPU에는 모델의 한 개 또는 여러 개의 레이어만 배치됩니다. 각 GPU는 파이프라인의 서로 다른 단계를 병렬로 처리하며 배치의 작은 청크를 작업합니다. PipelineParallel에 대해 자세히 알아보세요.

픽셀 값

모델에 전달되는 이미지의 수치 표현 텐서입니다. 픽셀 값의 모양은 [batch_size, num_channels, height, width]이며, 이미지 프로세서에 의해 생성됩니다.

풀링

Pooling은 최대값 또는 평균을 취하여 풀링된 차원을 더 작은 행렬으로 축소하는 연산입니다. 풀링 레이어는 일반적으로 컨볼루션 레이어 사이에 배치되어 특징 표현을 다운샘플링하는 데 사용됩니다.

위치 ID

각 토큰의 위치가 내장된 RNN과 달리, transformers는 각 토큰의 위치를 알지 못합니다. 따라서 모델은 토큰 목록에서 각 토큰의 위치를 식별하기 위해 위치 ID(position_ids)를 사용합니다.

이들은 선택적 매개변수입니다. 모델에 position_ids가 전달되지 않으면, ID는 절대 위치 임베딩으로 자동 생성됩니다.

절대 위치 임베딩은 [0, config.max_position_embeddings - 1] 범위에서 선택됩니다. 일부 모델은 사인 위치 임베딩이나 상대 위치 임베딩과 같은 다른 유형의 위치 임베딩을 사용합니다.

전처리

기계 학습 모델이 쉽게 소비할 수 있는 형식으로 원시 데이터를 준비하는 작업입니다. 예를 들어, 텍스트는 일반적으로 토큰화를 통해 전처리됩니다. 다른 입력 유형에 대한 전처리가 어떻게 이루어지는지 더 자세히 알아보려면 Preprocess 튜토리얼을 확인해 보세요.

사전학습된 모델

일부 데이터(예: Wikipedia 전체)로 사전 학습된 모델입니다. 사전 학습 방법은 자기 감독(self-supervised) 목적 함수를 포함하며, 텍스트를 읽고 다음 단어를 예측하는 것(causal language modeling 참조)이나 일부 단어를 마스킹한 후 이를 예측하는 것(masked language modeling 참조) 등이 있습니다.

음성 및 비전 모델은 각각 고유한 사전 학습 목표를 가집니다. 예를 들어, Wav2Vec2는 “true” 음성 표현을 “false” 음성 표현의 집합에서 식별하도록 요구하는 대조적 작업으로 사전 학습된 음성 모델입니다. 반면, BEiT는 일부 이미지 패치를 마스킹하고 모델이 해당 마스킹된 패치를 예측하도록 요구하는 마스킹 이미지 모델링 작업으로 사전 학습된 비전 모델입니다(마스킹 언어 모델링 목표와 유사).

R

순환 신경망(RNN)

layer에 대한 루프를 사용하여 텍스트를 처리하는 모델 유형입니다.

표현 학습

원시 데이터의 의미 있는 표현을 학습하는 데 초점을 맞춘 기계 학습의 하위 분야입니다. 표현 학습 기법의 예로는 워드 임베딩, 오토인코더, 생성 적대 신경망(GAN) 등이 있습니다.

S

샘플링 레이트

초당 샘플(오디오 신호)의 개수를 헤르츠 단위로 측정한 값입니다. 샘플링 레이트는 음성 같은 연속 신호를 이산화한 결과입니다.

self-attention

입력의 각 요소는 입력의 다른 요소 중 어떤 요소에 주의를 기울여야 하는지 결정합니다.

자기지도 학습

모델이 라벨이 없는 데이터로부터 자체적으로 학습 목표를 생성하는 기계 학습 기법의 한 종류입니다. 학습 과정이 감독되지만 사용자가 명시적으로 감독하지는 않는다는 점에서 unsupervised learning과 supervised learning과 구별됩니다.

자기 지도 학습의 한 예시는 마스크 언어 모델링으로, 모델에 토큰의 일부가 제거된 문장을 전달하고 누락된 토큰을 예측하도록 학습시키는 방식입니다.

반지도 학습

지도 학습과 비지도 학습과 달리, 소량의 라벨링된 데이터와 대량의 라벨링되지 않은 데이터를 활용하여 모델의 정확도를 향상시키는 기계 학습 훈련 기법의 광범위한 범주입니다.

반지도 학습(semi-supervised learning) 접근법의 예로 “self-training”이 있습니다. 이 방식에서는 먼저 모델이 라벨이 있는 데이터로 학습된 후, 라벨이 없는 데이터에 대한 예측을 수행합니다. 모델이 가장 높은 확신(confidence)으로 예측한 라벨 없는 데이터의 일부는 라벨 데이터셋에 추가되어 모델을 다시 학습하는 데 사용됩니다.

시퀀스-투-시퀀스(seq2seq)

입력으로부터 새로운 시퀀스를 생성하는 모델, 예를 들어 번역 모델이나 요약 모델(Bart 또는 T5 등).

Sharded DDP

ZeRO의 다양한 다른 구현에서 사용되는 기본 ZeRO 개념의 다른 이름입니다.

stride

convolution 또는 pooling에서 stride는 커널이 행렬 위에서 이동하는 거리를 의미합니다. stride가 1이면 커널이 한 번에 1픽셀씩 이동하고, stride가 2이면 커널이 한 번에 2픽셀씩 이동합니다.

supervised learning

모델의 성능을 보정하고 지시하기 위해 라벨이 붙은 데이터를 직접 사용하는 형태의 모델 학습입니다. 학습 중인 모델에 데이터를 입력하고, 그 예측 결과를 알려진 라벨과 비교합니다. 모델은 예측이 얼마나 부정확했는지에 따라 가중치를 업데이트하며, 이 과정이 반복되어 모델 성능이 최적화됩니다.

T

Tensor Parallelism (TP)

여러 GPU에서 학습을 위한 병렬화 기법으로, 각 텐서를 여러 개의 청크로 분할하여 전체 텐서가 단일 GPU에 상주하는 대신 텐서의 각 샤드가 지정된 GPU에 상주하도록 합니다. 샤드는 서로 다른 GPU에서 개별적이고 병렬적으로 처리되며, 처리 단계의 끝에서 결과가 동기화됩니다. 이는 분할이 수평 수준에서 일어나기 때문에 때로는 수평 병렬(horizontal parallelism)이라고도 불립니다. Tensor Parallelism에 대해 자세히 알아보려면 여기를 참조하세요.

토큰

문장의 일부로, 보통 단어이지만 서브워드(흔하지 않은 단어는 서브워드로 분할되는 경우가 많음)나 구두점 기호일 수도 있습니다.

토큰 유형 ID

일부 모델의 목적은 문장 쌍에 대한 분류 또는 질의응답 수행입니다.

이것은 두 개의 서로 다른 시퀀스를 하나의 “input_ids” 항목으로 결합해야 하며, 보통 [CLS]와 [SEP]와 같은 특수 토큰의 도움을 받아 수행됩니다. 예를 들어, BERT 모델은 두 시퀀스 입력을 다음과 같이 구성합니다:

>>> # [CLS] SEQUENCE_A [SEP] SEQUENCE_B [SEP]

tokenizer에 두 시퀀스를 리스트가 아닌 두 개의 인수로 전달하여(이전과 달리) 다음과 같이 토크나이저를 사용해 이러한 문장을 자동으로 생성할 수 있습니다:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "HuggingFace is based in NYC"
>>> sequence_b = "Where is HuggingFace based?"

>>> encoded_dict = tokenizer(sequence_a, sequence_b)
>>> decoded = tokenizer.decode(encoded_dict["input_ids"])

다음과 같은 결과를 반환합니다:

>>> print(decoded)
[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]

일부 모델이 한 시퀀스가 어디서 끝나고 다른 시퀀스가 어디서 시작되는지를 이해하는 데에는 이 정도면 충분합니다. 그러나 BERT와 같은 다른 모델들은 토큰 타입 ID(세그먼트 ID라고도 함)를 함께 사용합니다. 이는 모델 내 두 가지 유형의 시퀀스를 식별하는 바이너리 마스크로 표현됩니다.

토크나이저는 이 마스크를 “token_type_ids” 항목으로 반환합니다:

>>> encoded_dict["token_type_ids"]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]

질문에 사용되는 “context”인 첫 번째 시퀀스의 모든 토큰은 0으로 표현되고, “question”에 해당하는 두 번째 시퀀스의 모든 토큰은 1로 표현됩니다.

XLNetModel과 같은 일부 모델은 2로 표현되는 추가 토큰을 XLNetModel이 사용합니다.

전이 학습

… 사전 학습된 모델을 가져와서 특정 작업에 맞는 데이터셋에 맞게 조정하는 기법입니다. 모델을 처음부터 학습하는 대신, 기존 모델에서 얻은 지식을 출발점으로 활용할 수 있습니다. 이를 통해 학습 과정을 가속화하고 필요한 학습 데이터의 양을 줄일 수 있습니다.

transformer

Self-attention 기반 딥러닝 모델 아키텍처.

U

비지도 학습

모델에 제공되는 데이터가 라벨링되지 않은 형태의 모델 학습입니다. 비지도 학습 기법은 데이터 분포의 통계 정보를 활용하여 해당 작업에 유용한 패턴을 찾습니다.

Z

Zero Redundancy Optimizer (ZeRO)

TensorParallel과 유사하게 텐서를 샤딩하는 병렬화 기법이지만, 전방 또는 역방향 계산 시점에 전체 텐서가 재구성되므로 모델을 수정할 필요가 없습니다. 이 방법은 제한적인 GPU 메모리를 보완하기 위해 다양한 오프로딩 기법도 지원합니다. ZeRO에 대해 자세히 알아보려면 여기를 참조하세요.

Update on GitHub