호돌찌의 AI 연구소
article thumbnail

NLP을 활용한다고 하면 Pre-trained Language Model(PLM)은 필수인 시대인데, 온라인 환경에서는 그냥 README.md나 튜토리얼 코드를 그냥 그대로 따라 하면 쉽게 실습을 할 수 있습니다. 하지만 오프라인 환경에서는 이를 수행할 수 없습니다. 그 이유는 PLM model들이 huggingface hub(공식 doc)에서 모델을 다운받아 활용하기 때문입니다. 외부 온라인 환경에서 다운로드하여 오프라인 환경에 맞게 실행이 되는 경로에 배치를 해야 합니다. 

 

이번 글에서는 카카오브레인에서 옛날에 개발한 NLP 관련 플랫폼 패키지인 PORORO를 예시로 두고 활용하고자 합니다. (PORORO 관련 Reference는 아래에 기술하였으니 참고하시면 됩니다.)

 


1. 온라인 환경에서 우선 Test 해보기

아래 Reference에서 활용하는 부분을 참고하면 됩니다. 모델이 아무 이상 없이 성공적으로 불러와지면 됩니다. 

from pororo import Pororo
dp = Pororo(task = 'dep_parse',
           lang = 'ko')
ner = Pororo(task="ner", lang="ko")

 

2. 모듈 들여다보기

대부분 오픈소스들 확인해보면 모델을 다운받는 부분이 거의 존재합니다. 아래와 같은 경우에는 download_or_load_* 관련 함수가 다운을 받는 것을 알 수 있고, get_save_dir()의 retrun 경로에 저장이 되는 것을 알 수 있습니다. 

 

https://github.com/kakaobrain/pororo/blob/master/pororo/tasks/utils/download_utils.py

 

GitHub - kakaobrain/pororo: PORORO: Platform Of neuRal mOdels for natuRal language prOcessing

PORORO: Platform Of neuRal mOdels for natuRal language prOcessing - GitHub - kakaobrain/pororo: PORORO: Platform Of neuRal mOdels for natuRal language prOcessing

github.com

 

import logging
import os
import platform
import sys
from typing import Tuple, Union



from pororo.tasks.utils.config import CONFIGS

def get_save_dir(save_dir: str = None) -> str:
    """
    Get default save directory
    Args:
        savd_dir(str): User-defined save directory
    Returns:
        str: Set save directory
    """
    # If user wants to manually define save directory
    if save_dir:
        os.makedirs(save_dir, exist_ok=True)
        return save_dir

    pf = platform.system()

    if pf == "Windows":
        save_dir = "C:\\pororo"
    else:
        home_dir = os.path.expanduser("~")
        save_dir = os.path.join(home_dir, ".pororo")

    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    return save_dir

 

실제로 한번 get_save_dir() 을 수행하면 아래와 같은 경로에 저장되는 것을 알 수 있습니다. 

 

이 경로는 실제로 root 경로 아래에 새 폴더가 생성되어 모델을 다운로드하는 것을 알 수 있습니다. 아래 명령어로 base path, 패키지 설치 경로 등 확인이 가능합니다.

python -m site

 

3. 다운 받은 모델이 어디에 저장되는지 확인하기

터미널에서 위의  get_save_dir() 결과 path에 들어가면 확인이 가능합니다. ner과 dependency parsing 모델이 bert base라 bert 하위 폴더에 모델 압축파일이 존재하는 것을 알 수 있습니다. 

 

4. 모델 압축 파일을 오프라인 환경에 배치

해당 압축 파일을 오프라인 환경에 새 폴더 구성하여 옮기고 unzip을 해주고 실행하면 제대로 모델이 실행됨을 알 수 있습니다. (필자 환경에서는 보안 때문에 보여드리기 힘든 점을 양해 부탁드립니다.)

 

 

5. 결론

pororo 말고도 다른 nlp 오픈소스들도 이와 유사하게 접근해서 활용할 수 있습니다.(예전 기억으로는 sentence-transformers, keybert, bertopic 도 유사하게 작동했던 것으로 기억이 납니다.) NLP 말고도 다른 분야의 Pre-Trained Model을 활용할 때도 이와 비슷하게 활용할 수 있을 것입니다. 또한 huggingface hub에 없는 자체적으로 구축한 PLM모델(I/O가 같다는 가정하에)을 연결해서 사용하는 경우도 있습니다. 이 부분도 하위 모듈을 일부 확인하여 수정하여 활용할 수 있습니다. 

 

 

 

 


 

<Reference>

- PORORO 공식 Documentation

https://kakaobrain.github.io/pororo/

 

Welcome to PORORO’s documentation! — PORORO: Platform Of neuRal mOdels for natuRal language prOcessing 0.3.1 documentation

© Copyright 2021, Kakao Brain Corp.

kakaobrain.github.io

- PORORO GIthub

https://github.com/kakaobrain/pororo

 

GitHub - kakaobrain/pororo: PORORO: Platform Of neuRal mOdels for natuRal language prOcessing

PORORO: Platform Of neuRal mOdels for natuRal language prOcessing - GitHub - kakaobrain/pororo: PORORO: Platform Of neuRal mOdels for natuRal language prOcessing

github.com

 

- PORORO 활용

https://teddylee777.github.io/machine-learning/nlp-korean-pororo

 

뽀로로(PORORO) 자연어처리 라이브러리 활용기 (dev. and maintained by 카카오 브레인(Kakao Brain) PORORO팀)

뽀로로(PORORO) 자연어처리 라이브러리 활용기 (dev. and maintained by 카카오 브레인(Kakao Brain) PORORO팀)에 대해 알아 보도록 하겠습니다.

teddylee777.github.io

 


'AI > NLP' 카테고리의 다른 글

ChatGPT 사용법 A-Z, 예시, 한계점 및 시사점  (3) 2022.12.22
Dependency Parsing (1)  (0) 2022.04.17
Pretrained Language Model - 14. BART  (0) 2021.11.11
Pretrained Language Model - 13. RoBERTa  (0) 2021.11.05
Pretrained Language Model - 12. BERT  (0) 2021.11.02
profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!