본문 바로가기
파이썬

[Python] HuggingFace로 오픈소스 AI모델 구동해보기 [04]

by dev_drive 2024. 9. 10.
반응형

 

 

[Python] GPU로 AI 모델을 구동하기 위한 PyTorch + CUDA + cuDNN 설정 방법 [03]

[Python] LangChain으로 Llama3 언어 모델 구동해보기 [02][Python] 메타의 대규모 AI 언어모델 Llama3 설치 및 사용방법 [01]메타에서 AI기술의 발전을 가속화 할 수 있도록 대규모 언어 모델(LLM)을 오픈소스로

dev-drive.tistory.com

 

 

허깅페이스란? 

 

현재 가장 유명한 인공지능 플랫폼으로 자연어 처리를 위한 Transformer 라이브러리와

데이터 처리를 위한 Datasets 라이브러리, 데이터를 토큰화 시키는 Tokenizers 라이브러리 등 

AI모델 처리를 위한 다양한 편의 기능을 제공하고 Hub를 통해 모델을 호스팅하거나 공유할 수 있는 플랫폼입니다.

 

 

 

🔹 허깅페이스 둘러보기

 

Models - Hugging Face

 

huggingface.co

허깅페이스 사이트에 접속해 모델 카데고리를 살펴보면

텍스트로 이미지를 생성하는 Text-to-Image,

사람의 얼굴이나 객체를 찾는 Object Detection,

이미지를 보고 어떤 것인지 분류하는 Image Classification 등

현재 존재하는 AI 기술에 대한 모델들이 대부분 오픈소스로 올라와 있습니다. 

(물론 오픈소스이지만 상업적 사용은 제한된 모델들도 존재합니다)

 

 

 

 

그 중 라마 같은 언어 모델을 허깅페이스에서는 Text Generation이라고 표현하는데, 

들어가서 살펴보면 오픈소스 언어모델 중에는 라마가 리더보드 점수도 높은 편이고 상위권에 위치하고 있습니다.

 

하지만 이번에는 라마 대신 Qwen2 언어모델로 테스트해보겠습니다. 

 

Qwen/Qwen2-72B-Instruct · Hugging Face

Qwen2-72B-Instruct Introduction Qwen2 is the new series of Qwen large language models. For Qwen2, we release a number of base language models and instruction-tuned language models ranging from 0.5 to 72 billion parameters, including a Mixture-of-Experts mo

huggingface.co

Qwen2 모델 페이지에서 우측에 있는 Use this model을 클릭하고 사용할 라이브러리를 클릭하면

모델의 사용 방법을 확인할 수 있습니다.

 

여기서 pipeline은 AutoTokenizer를 포함하고 있는 방식이고 

모델을 조금 더 세부적으로 제어하고 싶을 때 아래에 있는 AutoTokenizer 방식을 사용합니다.

 

 

 

🔹 Qwen2 7B모델 테스트

from transformers import pipeline

messages = [
    {"role": "user", "content": "AI언어모델에 대해 알려줘"},
]
pipe = pipeline("text-generation", model="Qwen/Qwen2-7B-Instruct", max_length=1024)
print(pipe(messages))

(72B모델은 다운로드가 너무 오래걸려서 저는 7B 모델로 테스트했습니다)

간단하게 위와 같이 테스트코드를 작성해 실행해보면 모델이 없는 경우 자동으로 다운로드까지 

진행되며 아래와 같은 내용이 출력됩니다. 

 

 

 

※ 허깅페이스에서 다운 받은 모델은 아래의 경로에 저장되니 사용하지 않는 모델은 해당 경로에서 제거하면 됩니다.

C:\Users\<사용자명>\.cache\huggingface\

 

 

 

 

마지막으로 GPU를 사용하여 Text to Image 모델을 테스트해보겠습니다. 

전통적으로 유명한 Text to Image 모델인 Stable Diffusion으로 테스트를 진행하겠습니다.

 

 

🔹 Text to Image (Stable Diffusion) 모델 테스트

from diffusers import StableDiffusionPipeline
import torch

model_id = "runwayml/stable-diffusion-v1-5"

pipe = StableDiffusionPipeline.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    safety_checker=None
    ).to("cuda")

prompt = "A busy city street during rush hour, with cars, pedestrians, and tall buildings on both sides under a clear blue sky."
image = pipe(prompt).images[0]  
    
image.save("test.png")

사용하는 GPU에 따라서 이미지가 생성되지 않거나 하는 버그가 있을 수 있는데,

실행 시 오류가 발생하거나 이미지가 깨지면 일부 옵션을 수정해보세요.

 

아래는 입력한 프롬프트로 생성된 이미지입니다.

 

 

 

 

Spaces - Hugging Face

Running on CPU Upgrade

huggingface.co

허깅페이스 Spaces에 가면 다른 사람들이 구현해 놓은 서비스를 체험해 볼 수 있으니 

다양한 모델들을 체험해보고 자신만의 서비스를 구현해보시길 바랍니다😀

 

반응형

댓글