허깅페이스에서 모델을 로컬로 다운로드하는 방법
서론
허깅페이스(Hugging Face)는 다양한 자연어 처리(NLP) 모델을 제공하는 플랫폼으로, 많은 연구자와 개발자들이 이를 사용하고 있습니다. 때로는 인터넷 연결이 불안정하거나, 보안상의 이유로 모델을 로컬에 다운로드하여 사용하는 것이 필요할 수 있습니다. 이 글에서는 허깅페이스에서 모델을 로컬로 다운로드하고 로드하는 방법에 대해 자세히 설명합니다.
본론
허깅페이스에서 모델을 로컬로 다운로드하고 사용하는 방법은 크게 두 단계로 나뉩니다. 첫 번째 단계는 모델을 다운로드하여 로컬에 저장하는 것이고, 두 번째 단계는 저장된 모델을 로드하여 사용하는 것입니다. 이를 위해 우리는 sentence_transformers
와 langchain
라이브러리를 사용할 것입니다.
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)
위 코드에서는 다음과 같은 작업을 수행합니다:
HuggingFaceEmbeddings
클래스를 사용하여 로컬 경로에 저장된 모델을 로드합니다.- 샘플 데이터프레임을 생성합니다.
- 데이터프레임의 각 텍스트에 대해 임베딩을 생성하고, 이를 벡터스토어에 저장합니다. 여기서 벡터스토어는 간단하게 딕셔너리로 표현됩니다.
이 예제를 통해 로컬에 저장된 모델을 사용하여 텍스트 임베딩을 생성하고, 이를 활용하는 방법을 이해할 수 있습니다.
결론
허깅페이스에서 모델을 로컬로 다운로드하고 사용하는 방법을 살펴보았습니다. sentence_transformers
와 langchain
라이브러리를 사용하여 쉽게 모델을 다운로드하고 로드할 수 있었습니다. 이를 통해 인터넷 연결이 불안정한 환경에서도 안정적으로 NLP 모델을 사용할 수 있습니다. 앞으로 이러한 방법을 활용하여 더욱 효율적인 인공지능 개발을 할 수 있기를 바랍니다.
댓글남기기