서론

허깅페이스(Hugging Face)는 다양한 자연어 처리(NLP) 모델을 제공하는 플랫폼으로, 많은 연구자와 개발자들이 이를 사용하고 있습니다. 때로는 인터넷 연결이 불안정하거나, 보안상의 이유로 모델을 로컬에 다운로드하여 사용하는 것이 필요할 수 있습니다. 이 글에서는 허깅페이스에서 모델을 로컬로 다운로드하고 로드하는 방법에 대해 자세히 설명합니다.

본론

허깅페이스에서 모델을 로컬로 다운로드하고 사용하는 방법은 크게 두 단계로 나뉩니다. 첫 번째 단계는 모델을 다운로드하여 로컬에 저장하는 것이고, 두 번째 단계는 저장된 모델을 로드하여 사용하는 것입니다. 이를 위해 우리는 sentence_transformerslangchain 라이브러리를 사용할 것입니다.

1. 모델 다운로드 및 저장

먼저, 허깅페이스에서 제공하는 jhgan/ko-sroberta-multitask 모델을 다운로드하여 로컬에 저장하는 방법을 살펴보겠습니다. 이를 위해 sentence_transformers 라이브러리를 사용할 것입니다.

from sentence_transformers import SentenceTransformer

# 모델 다운로드 및 로컬에 저장
model = SentenceTransformer("jhgan/ko-sroberta-multitask")
model.save("./local_ko_sroberta_multitask")

위 코드에서는 SentenceTransformer 클래스의 인스턴스를 생성하고, jhgan/ko-sroberta-multitask 모델을 다운로드합니다. 그런 다음, save 메서드를 사용하여 모델을 로컬 디렉토리인 ./local_ko_sroberta_multitask에 저장합니다.

2. 로컬 경로에서 임베딩된 모델 로드

이제 로컬에 저장된 모델을 로드하여 사용할 수 있습니다. 이를 위해 langchain 라이브러리의 HuggingFaceEmbeddings 클래스를 사용할 것입니다. 다음 예제에서는 데이터프레임을 사용하여 임베딩을 생성하고 이를 벡터스토어에 저장하는 방법을 자세히 설명합니다.

from langchain.embeddings import HuggingFaceEmbeddings
import pandas as pd

# 로컬에 저장된 모델 로드- 1번에서 저장된 파일위치 지정
embeddings = HuggingFaceEmbeddings(model_name="./local_ko_sroberta_multitask")

# 샘플 데이터프레임 생성
data = {
    'id': [1, 2, 3],
    'text': ["안녕하세요", "허깅페이스 모델 사용법", "로컬에서 모델 로드"]
}
df = pd.DataFrame(data)

# 데이터프레임에서 텍스트 임베딩 생성 및 벡터스토어 생성 함수
def create_vectorstore(df):
    # 각 텍스트에 대해 임베딩 생성
    df['embedding'] = df['text'].apply(lambda x: embeddings.embed([x])[0])
    
    # 벡터스토어 생성 (여기서는 간단히 딕셔너리로 표현)
    vectorstore = {row['id']: row['embedding'] for _, row in df.iterrows()}
    return vectorstore

# 벡터스토어 생성
vectorstore = create_vectorstore(df)

# 생성된 벡터스토어 출력
print(vectorstore)

위 코드에서는 다음과 같은 작업을 수행합니다:

  1. HuggingFaceEmbeddings 클래스를 사용하여 로컬 경로에 저장된 모델을 로드합니다.
  2. 샘플 데이터프레임을 생성합니다.
  3. 데이터프레임의 각 텍스트에 대해 임베딩을 생성하고, 이를 벡터스토어에 저장합니다. 여기서 벡터스토어는 간단하게 딕셔너리로 표현됩니다.

이 예제를 통해 로컬에 저장된 모델을 사용하여 텍스트 임베딩을 생성하고, 이를 활용하는 방법을 이해할 수 있습니다.

결론

허깅페이스에서 모델을 로컬로 다운로드하고 사용하는 방법을 살펴보았습니다. sentence_transformerslangchain 라이브러리를 사용하여 쉽게 모델을 다운로드하고 로드할 수 있었습니다. 이를 통해 인터넷 연결이 불안정한 환경에서도 안정적으로 NLP 모델을 사용할 수 있습니다. 앞으로 이러한 방법을 활용하여 더욱 효율적인 인공지능 개발을 할 수 있기를 바랍니다.

댓글남기기