Hugging Face 에서 얻을 수 있는 모델:

  • image Recongnition
  • Automatic Speech Recognition (음성 -> 텍스트로 변환하는 모델)
  • 다양한 NLP 처리를 위한 Transformer Models
  • Multimodal Models (Text to image)
  • Text Embedding Models (for semantic search and clustering

 

Selecting Model

Hugging face hub 에서 지원하는 것들:

  • Models: The Hub hosts a vast collection of machine learning models for various tasks, including natural language processing, computer vision, and audio processing.
  • Datasets: The Hub provides access to a wide range of datasets for tasks such as translation, speech recognition, and image classification
  • Spaces: These are interactive applications that allow users to demonstrate machine learning models directly in their browsers.

 

LM 을 선택할 때 사용하는 기준들:

  • Language: 지원하는 언어
  • Licenses: 상업적 사용도 허용하고, 여러분의 어플리케이션을 만들 때 사용할 수 있도록 하는 라이센스
  • Sort: 최신 걸 보려면 Trending, 인기 있는걸 보려면 Most stars, Most Downloads
  • Model Card:
    • Model 에 대한 유용한 정보를 제공하는 README 파일 같은 것.
    • 모델의 아키텍처에 대한 설명
    • 모델이 어떻게 훈련되었는지
    • 모델의 제한사항은 무엇인지
    • 모델이 무엇을 할 수 있는지
    • 모델의 사이즈 별로 설명해놓기도 한다.

 

Building Chatbot pipeline using Transformer Library:

  • pipeline 함수는 자연어 처리(NLP) 작업을 매우 간단하게 수행할 수 있도록 해주는 라이브러리.
    • 모델 로딩, 전처리, 후처리 등의 과정을 자동화 해준다.
    • 모델 로딩: 사전 훈련된 모델을 다운로드
    • 토크나이저 설정: 선택된 모델에 맞는 토크나이저를 자동으로 로드하고 설정
    • 입력 전처리: 입력된 텍스트를 토크나이징 하고, 패딩이나 truncation, 특수 토큰을 추가하는 기능을 함. (임베딩은 모델 내부에서 수행됨)
    • 전처리 된 입력을 모델에 전달해서 추론을 실행함.
    • 모델의 출력 후 사람이 알아보기 쉽도록 변환한다. (토큰 ID 를 텍스트로 변환함)
  • task: 수행할 NLP 작업을 지정하면 됨. (예: "conversational", "text-classification", "question-answering" 등).
  • model: 사용할 모델을 지정하면 된다. Hugging Face 모델 허브의 이름이나 로컬 경로를 사용할 수 있음.
from transformers.utils import logging
logging.set_verbosity_error()

from transformers import pipeline

chatbot = pipeline(task="conversational", model="./models/facebook/blenderbot-400M-distill")

user_message = """
What are some fun activities I can do in the winter?
"""

from transformers import Conversation

conversation = Conversation(user_message)

print(conversation)

conversation = chatbot(conversation)

print(conversation)

conversation = chatbot(conversation)

print(conversation)

 

 

Translation:

from transformers.utils import logging
logging.set_verbosity_error()

from transformers import pipeline 
import torch

translator = pipeline(task="translation",
                      model="./models/facebook/nllb-200-distilled-600M",
                      torch_dtype=torch.bfloat16) 

text = """\
My puppy is adorable, \
Your kitten is cute.
Her panda is friendly.
His llama is thoughtful. \
We all have nice pets!"""

text_translated = translator(text,
                             src_lang="eng_Latn",
                             tgt_lang="fra_Latn")

 

 

Free up some memory before continuing:

  • In order to have enough free memory to run the rest of the code, please run the following to free up memory on the machine.
import gc

del translator
gc.collect()

 

 

Summarization:

summarizer = pipeline(task="summarization",
                      model="./models/facebook/bart-large-cnn",
                      torch_dtype=torch.bfloat16)

text = """Paris is the capital and most populous city of France, with
          an estimated population of 2,175,601 residents as of 2018,
          in an area of more than 105 square kilometres (41 square
          miles). The City of Paris is the centre and seat of
          government of the region and province of Île-de-France, or
          Paris Region, which has an estimated population of
          12,174,880, or about 18 percent of the population of France
          as of 2017."""

summary = summarizer(text,
                     min_length=10,
                     max_length=100)

summary

 

 

Sentence Embeddings:

from transformers.utils import logging
logging.set_verbosity_error()

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")

sentences1 = ['The cat sits outside',
              'A man is playing guitar',
              'The movies are awesome']

embeddings1 = model.encode(sentences1, convert_to_tensor=True)

sentences2 = ['The dog plays in the garden',
              'A woman watches TV',
              'The new movie is so great']

embeddings2 = model.encode(sentences2, 
                           convert_to_tensor=True)

from sentence_transformers import util

cosine_scores = util.cos_sim(embeddings1,embeddings2)

print(cosine_scores)

for i in range(len(sentences1)):
    print("{} \t\t {} \t\t Score: {:.4f}".format(sentences1[i],
                                                 sentences2[i],
                                                 cosine_scores[i][i]))

'Generative AI > LLM' 카테고리의 다른 글

DSPy  (0) 2024.09.04
Key Features of LLMs  (0) 2024.08.29
생성AI로 똑똑하게 일하는 법 리뷰  (0) 2024.08.28

+ Recent posts