๐ฒ RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when callingย cublasCreate(handโค)
๐ต nn.Embedding ์ฐจ์ โ ์ค์ ๋ฐ์ดํฐ ์
๋ ฅ ์ฐจ์
torch.nn.Embedding
์์ ์ ์ํ ์
์ถ๋ ฅ ์ฐจ์๊ณผ ์ค์ ๋ฐ์ดํฐ์ ์ฐจ์์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ์๋ฌ๋ค. ๋ค์ํ ์ํฉ์์ ๋ง์ฃผํ ์ ์๋ ์๋ฌ์ง๋ง, ํ์์ ๊ฒฝ์ฐ Huggingface
์์ ๋ถ๋ฌ์จpretrained tokenizer
์ special token
์ ์ถ๊ฐํด ์ฌ์ฉํ ๋, ํ ํฐ์ ์ถ๊ฐํ๋ค๋ ์ฌ์ค์ ์๊ณ nn.Embedding
์ ์ ์ํ ์
์ถ๋ ฅ ์ฐจ์์ ๋ณ๊ฒฝํ์ง ์์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค.
from transformers import AutoTokenizer, AutoConfig, AutoModel
class CFG:
model_name = 'microsoft/deberta-v3-large'
config = AutoConfig.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name, config=config)
def add_markdown_token(cfg: sCFG) -> None:
"""
Add MarkDown token to pretrained tokenizer ('[MD]')
Args:
cfg: CFG, needed to load tokenizer from Huggingface AutoTokenizer
"""
markdown_token = '[MD]'
special_tokens_dict = {'additional_special_tokens': [f'{markdown_token}']}
cfg.tokenizer.add_special_tokens(special_tokens_dict)
markdown_token_id = cfg.tokenizer(f'{markdown_token}', add_special_tokens=False)['input_ids'][0]
setattr(cfg.tokenizer, 'markdown_token', f'{markdown_token}')
setattr(cfg.tokenizer, 'markdown_token_id', markdown_token_id)
cfg.tokenizer.save_pretrained(f'{cfg.checkpoint_dir}/tokenizer/')
add_markdown_token(CFG)
CFG.model.resize_token_embeddings(len(tokenizer))
๊ตฌ๊ธ๋งํด๋ณด๋ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํ ๊ฒ ๊ฐ์๋ฐ, torch.nn.Embedding
์ ์ ์๋ ์
์ถ๋ ฅ ์ฐจ์์ ์ค์ ๋ฐ์ดํฐ ์ฐจ์๊ณผ ๋ง์ถฐ์ฃผ๋ฉด ๊ฐ๋จํ๊ฒ ํด๊ฒฐ๋๋ค. ํ์์ฒ๋ผ special token
์ ์ถ๊ฐํด ์ฌ์ฉํ๋ค ํด๋น ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ํฉ์ด๋ผ๋ฉด ์๋ก์ด ํ ํฐ์ด ์ถ๊ฐ๋ ํ ํฌ๋์ด์ ์ ๊ธธ์ด๋ฅผ ๋ค์ ์ธก์ ํ ๋ค ๊ฐ์ resize_token_embeddings
๋ฉ์๋์ ์ ๋ฌํด nn.Embedding
์ ์
๋ฐ์ดํธ ํด์ฃผ๋ฉด ๋๋ค.
Leave a comment