albert-small-kor-v1
- albert-small 한국어 scratch 모델
- ai_hub 웹데이터 기반 한국어 말뭉치 데이터 (약 52M Text) 말뭉치로 SOP, MLM 훈련시킨 모델
- vocab: 30,000개 (SentencePiece)
Usage (HuggingFace Transformers)
MASK 예시
from transformers import AutoTokenizer, AutoModel, AlbertForMaskedLM
import torch
import torch.nn.functional as F
tokenizer = AutoTokenizer.from_pretrained('bongsoo/albert-small-kor-v1', do_lower_case=True)
model = AlbertForMaskedLM.from_pretrained('bongsoo/albert-small-kor-v1')
text = ['한국 수도는 [MASK] 이다', '프랑스 수도는 [MASK]이다', '충무공 이순신은 [MASK]에 최고의 장수였다']
tokenized_input = tokenizer(text, max_length=128, truncation=True, padding='max_length', return_tensors='pt')
outputs = model(**tokenized_input)
logits = outputs.logits
mask_idx_list = []
for tokens in tokenized_input['input_ids'].tolist():
token_str = [tokenizer.convert_ids_to_tokens(s) for s in tokens]
# **위 token_str리스트에서 [MASK] 인덱스를 구함
# => **해당 [MASK] 안덱스 값 mask_idx 에서는 아래 출력하는데 사용됨
mask_idx = token_str.index('[MASK]')
mask_idx_list.append(mask_idx)
for idx, mask_idx in enumerate(mask_idx_list):
logits_pred=torch.argmax(F.softmax(logits[idx]), dim=1)
mask_logits_idx = int(logits_pred[mask_idx])
# [MASK]에 해당하는 token 구함
mask_logits_token = tokenizer.convert_ids_to_tokens(mask_logits_idx)
# 결과 출력
print('\n')
print('*Input: {}'.format(text[idx]))
print('*[MASK] : {} ({})'.format(mask_logits_token, mask_logits_idx))
- 결과
*Input: 한국 수도는 [MASK] 이다
*[MASK] : ▁서울 (80)
*Input: 프랑스 수도는 [MASK]이다
*[MASK] : ▁불과 (1682)
*Input: 충무공 이순신은 [MASK]에 최고의 장수였다
*[MASK] : ▁우리 (184)
Training
MLM(Masked Langeuage Model) 훈련
- 모델 : Bert-base
- 말뭉치 : ai_hub 웹데이터 기반 한국어 말뭉치 데이터 (약 52M Text)
- HyperParameter : lr = 1e-4 , weigth_decay=0.01, batch_size = 128, token_max_len = 128,epoch = 8
- Vocab: 30,000개 (SentencePiece)
- 훈련시간 : 171h/1GPU (24GB/21GB use)
- 훈련코드 여기 참조
Model Config
{
"architectures": [
"AlbertForPreTraining"
],
"attention_probs_dropout_prob": 0,
"bos_token_id": 2,
"classifier_dropout_prob": 0.1,
"embedding_size": 128,
"eos_token_id": 3,
"hidden_act": "gelu_new",
"hidden_dropout_prob": 0,
"hidden_size": 768,
"initializer_range": 0.02,
"inner_group_num": 1,
"intermediate_size": 3072,
"layer_norm_eps": 1e-12,
"max_position_embeddings": 512,
"model_type": "albert",
"num_attention_heads": 12,
"num_hidden_groups": 1,
"num_hidden_layers": 6,
"pad_token_id": 0,
"position_embedding_type": "absolute",
"torch_dtype": "float32",
"transformers_version": "4.21.2",
"type_vocab_size": 2,
"vocab_size": 30000
}
Citing & Authors
bongsoo
- Downloads last month
- 3
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social
visibility and check back later, or deploy to Inference Endpoints (dedicated)
instead.