Search

Hugging Face Hub

대분류
인공지능/데이터
소분류
Hugging Face
유형
Hugging Face
부유형
Hub
최종 편집 일시
2024/10/27 15:20
생성 일시
2024/10/15 01:08
14 more properties

Hugging Face란?

자연어 처리 스타트업이 개발한, 다양한 트랜스포머 모델(transformer.models)과 학습 스크립트(transformer.Trainer)를 제공하는 모듈
허깅 페이스를 사용한다면, 트랜스포머 모델 사용시 layer, model 등을 선언하거나 학습 스크립트를 구현해야하는 수고를 덜 수 있다.
(2024년 10월 기준) 120k 이상의 모델, 20k의 데이터셋, 그리고 50k의 데모 앱(Spaces)을 포함하는 플랫폼
모든 것은 오픈 소스이며 공개적으로 이용할 수 있다.
이 플랫폼에서 사람들은 쉽게 협업하고 함께 ML을 구축할 수 있다.

Hugging Face 키 등록 하기

1.
설정으로 들어간다.
2.
토큰 이름 및 권한 설정
3.
사용한 모델(들)을 선택한다.
4.
자동으로 권한이 부여되어 진다. (Read : 다운로드 가능)
5.
키가 생성되고 하단에 키를 복사할 수 있는 칸이 생긴다.
1.
설정 → Access Tokens
2.
Type을 Read로 설정

Leaderboard

LLM Leaderboard

허깅페이스 서버에서 선택된 모델로 추론하고, 이에 대한 답변을 반환받는 방식

PromptTemplate

# 템플릿 template = """ Question: {question} Answer: """ # 프롬프트 템플릿 생성 # -> LLM에게 우리가 궁금한 질문(question) 물어보고, 그리고 답변을 받는 포맷 prompt = PromptTemplate(template=template, input_variables=["question"]) > prompt PromptTemplate(input_variables=['question'], input_types={}, partial_variables={}, template='\nQuestion: {question}\n\nAnswer: ')
Python
복사

LLM (사전 학습 모델)

# HuggingFace Repository ID repo_id = 'mistralai/Mistral-7B-v0.1' # HuggingFaceHub 객체 생성 llm = HuggingFaceHub( repo_id=repo_id, model_kwargs={"temperature": 0.2, # 자유도 "max_length": 128} # 최대 답변 길이 )
Python
복사

Chain 생성 (Promt + LLM)

LLM 모델이 응답을 하는 원리
input -> Question: {question} Answer:
model(1.예측) -> Question: {question} Answer: + token
input -> Question: {question} Answer: + token
model(2.예측) -> Question: {question} Answer: + token + token
...
# LLM Chain 객체 생성 llm_chain = LLMChain(prompt=prompt, llm=llm) > llm_chain LLMChain(verbose=False, prompt=PromptTemplate(input_variables=['question'], input_types={}, partial_variables={}, template='\nQuestion: {question}\n\nAnswer: '), llm=HuggingFaceHub(client=<InferenceClient(model='mistralai/Mistral-7B-v0.1', timeout=None)>, repo_id='mistralai/Mistral-7B-v0.1', task='text-generation', model_kwargs={'temperature': 0.2, 'max_length': 128}), output_parser=StrOutputParser(), llm_kwargs={})
Python
복사

질의 응답

Huggingface 서버를 통해서 예측
# 질의내용 my_question = "Who is Son Heung Min?" # 실행 > print(llm_chain.run(question=my_question)) Question: Who is Son Heung Min? Answer: 1. Son Heung Min is a South Korean professional footballer who plays as a winger for Premier League club Tottenham Hotspur and the South Korea national team. 2. He has been named the South Korean Footballer of the Year three times and has been included in the K League Best XI three times. 3. He is the first Asian player to score 100 goals in Europe’s top five leagues. 4. He is the
Python
복사
# 질의내용 -> 한국어 불가능;;;; my_question = "Please explain about King Sejong in Korean." # 실행 > print(llm_chain.run(question=my_question)) Question: Please explain about King Sejong in Korean. Answer: 세종대왕 (Sejong Daewang) King Sejong was the fourth king of the Joseon Dynasty. He was born in 1397 and died in 1450. He was the son of King Taejong and Queen Soheon. He was the third son of King Taejong. King Sejong was a great king. He was the one who created the Korean alphabet,
Python
복사

모델 다운로드 후 로컬(local)에서 추론

LLM

from langchain import LLMChain from langchain.prompts import PromptTemplate from langchain.llms import HuggingFacePipeline # HuggingFace Model ID model_id = 'beomi/llama-2-ko-7b' # HuggingFacePipeline 객체 생성 llm = HuggingFacePipeline.from_model_id( model_id=model_id, device=0, # -1: CPU(default), 0번 부터는 CUDA 디바이스 번호 지정시 GPU 사용하여 추론 task="text-generation", # 텍스트 생성 model_kwargs={"temperature": 0.1, "max_length": 64}, )
Python
복사

PromptTemplate

# 템플릿 template = """ 질문: {question} 답변: """ # 프롬프트 템플릿 생성 prompt = PromptTemplate.from_template(template)
Python
복사

LLMChain

# LLM Chain 객체 생성 llm_chain = LLMChain(prompt=prompt, llm=llm) # 실행 > question = "대한민국의 수도는 어디야?" > print(llm_chain.run(question=question)) 질문: 대한민국의 수도는 어디야? 답변: 서울입니다.
Python
복사