☑️ 목차

오늘 TIL 순서는

  1. 시작전 마음가짐
  2. Python 과제
  3. 머신러닝
  4. 회고

입니다.

오늘은 따로 필기하거나 작성한 코드가 없습니다.


☑️ 시작전 마음가짐

오늘은 학습에 흐름이 끊기지 않고 한 주제에 매몰 되지않게 순서를 짜 보았습니다.

 

물론 진행하다가 트러블이나 궁금증이 생기면 다시 매몰 될 수 있지만 학습에 오히려 좋은 것 같습니다.

 

어제 하지못한 API키 활용은 꼭 해보고 싶습니다!

 

그럼 학습을 시작하겟습니다.


☑️ Python 과제

1. 대소문자 바꿔서 출력하기

  • 대 소 문자 변환 함수가 upper, lower가 생각나고 한번에 전체 문자열을 바꾸는 함수가 있었는데 라고 생각함
  • 생각나지 않아 검색해보고 swapcase함수를 찾음
  • NameError로 swapcase() 작성 문법 틀려서 메서드 형태로 적용하고 해결
    str = input()
    str_swap = str.swapcase()
    while True:
      if len(str) >= 1 and len(str) <= 20:
          print(str_swap)
          break
      else:
          print('20자 이내의 영어문자만 입력하세요.')
          str = input()
          str_swap = str.swapcase()
          continue

2. 특수 문자열 출력

  • 특수 문자를 그대로 출력하는 방법을 몰라서 검색을 통하여 해결
  • \ 문자열은 \뒤에\를 붙이는 방식으로 출력 가능하는걸 알게 되었습니다. 하지만 너무 복잡해져서 더 알아보고 r string 방법을 찾았습니다.

3. 덧셈 식 출력하기

  • 이 문제는 모르는 부분 없이 금방 완료!!
  • 조건식을 간단하게 하는 방법을 찾아봄 1 <= a <= 100 and 1 <= b <= 100:
    a, b = map(int, input().strip().split(' '))
    if a >= 1 and a <= 100 and b >= 1 and b <= 100:
      print(f'{a} + {b} = {a + b}')

☑️ AI모델활용

강의를 3주차 1강까지 들었습니다.

강의를 들으며

  • 새로운 가상환경을 만들었습니다.
  • numpy 버젼 호환 문제가 발생하여 호환 가능한 버젼으로 다운 그레이드 해주었습니다.
  • transformers와 torch의 호환 문제로 호환되는 버젼으로 다운 그레이드 해주었습니다.
  • 다운그레드 과젱어서 torch vision과 오디오버젼에 문제가 생겼지만 당장 사용하지 않는 라이브러리들이라 변경하지 않았습니다.
  • 3-1까지 설명한 오류는 제외하면 깔끔하게 진행했습니다.
  • API키를 활용하는 모델이 나오지 않아 슬랙 질문방에 공유해주신 코드를 실행해보고 문제 없음을 알게 되었습니다.
  • 내일은 남은 강의를 들으며 나오는 코드와 공유받은 코드의 내부를 내가 바꾸고 싶은대로 해보는게 목표입니다.

☑️ 회고

오늘은 밍글데이로 약간의 쉬어가는 날이였습니다.

 

오늘 밍글데이라는걸 잊어버리고 계획을 잡아 머신러닝 복습과 포트폴리오 도전을 진행하지 못했습니다.ㅜㅜ

 

또한 새로운 챕터 발제가 있었고 내일부터 또 다른 강의를 수강해야할 것으로 보입니다.

 

아직 머신러닝도 복습 마무리 못했는데...

 

우선 강의를 1회 반복을 빠르게 진행하고 다른 복습을 진행하는게 진도 맞추기에 좋을것 같아 원래 한 주 계획이였던 포트폴리오와 머신러닝 복습은 미루어야겟습니다.

 

그리고 수준별 학습 강의를 진행했는데 처음 나오는 과제라서 문제없이 쉽게 풀었지만 튜터님께서 내가 생각한 한가지 방법말고도 여러 방법, 함수 등을 보여 주셨습니다.

 

하루를 마무리할 때 목표는 그 날 수준별 학습 강의 내용을 내 것으로 만들고 마무리하는 것으로 진행 예정입니다.

 

감사합니다.

☑️ 서론 및 목차

오늘부터는 TIL 가독성을 높이기 위해

 

학습을 시작하며 드는 생각

 

공부를하며 모르는 부분들과 실습을 진행하며 만난 오류들을 정리

 

공부를 마무리하며 회고

 

순서로 진행할 것입니다.

 

필기와 코드 설명은 쥬피터 노트북 코드상자에 정리할 것으로 GITHUB링크를 참고해야합니다.

 

TIL/AI/AI_5_1-5.ipynb at main · Onesword-Jang/TIL

 

TIL/AI/AI_5_1-5.ipynb at main · Onesword-Jang/TIL

오늘 배운 것은?! Contribute to Onesword-Jang/TIL development by creating an account on GitHub.

github.com

 

 


☑️ 학습 시작

오늘의 공부는  AI모델활용 강의  5-5까지 듣고 머신러닝의 비지도 학습을 복습할 것입니다.

 

강의만 듣고있으면 12시간 중 절반의 시간을 멍 때리기 때문에 강의양을 조절했습니다.

 

지금 까지 강의를 들으며 느낀 생각은

 

AI모델을 활용하면 정말 다양하고 내가 원하는게 무엇이든지 만들어 낼 수 있을거라는 생각이 들었습니다.

 

그 만큼 조심해야하는 부분이 많고 세세하게 설정해야하는 부분이 많아 보여 어렵게 느껴지지만 

 

나중에 숙달이 되었을 땐 꼭 궁금하거나 만들고 싶다고 생각이 드는 모델을 만들어 보고싶습니다.


☑️ 학습 중 만난 문제

AI모델활용 5 - 1

1. FastAPI 서버 실행 부분에서 ipynb파일을 바로 실행 시킬 수 없음 (FastAPI를 정의한 app을 찾을 수 없다고 Error가 나옴)

FastAPI를 사용할 땐 py파일을 만들어 사용하거나 vscode에서 만들면 쉽다.

쥬피터 노트북에서 사용하는 3가지 방법이있다.

 

1) 매직 명령어 사용

%%writefile AI_5.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

2) subprocess 사용

import subprocess
subprocess.run(["uvicorn", "AI_5:app", "--reload"])
  • 이 방법은 Uvicorn 프로세스에 점유되어 다른 셀을 사용할 수 없는 한계가 있다.

3) 별도 터미널에서 실행

  • 일반 터미널이나 Anaconda Prompt에서 FastAPI를 실행하는 것이 가장 간편한 방법
  • Jupyter Notebook은 FastAPI 서버와 독립적으로 사용할 수 있어, 서버 실행에 영향을 받지 않는다.

4) 쥬피터 노프북 셀에서 사용 방법은 3번 째 코드

2.  port의 종류

- 8000 : 테스트 용

 

- Well-Known Ports(0-1023): 이 범위의 포트는 표준화된 프로토콜에 의해 사용

  • 80 : HTTP
  • 443 : HTTPS
  • 25 : SMTP
  • 21 : FTP

- Registered Ports (1024-49151): 이 범위는 특정 애플리케이션에 의해 등록되어 사용

  • 3306 : MySQL
  • 5432 : PostgreSQL

- Dynamic/Private Ports (49152-65535): 이 범위의 포트는 동적으로 할당되는 포트로, 일반적으로 클라이언트 애플리케이션이 서버에 연결할 때 임시로 사용

 

AI모델 활용 5 - 4

1. numpy와 ultralytics의 컴파일러 문제와 빌드도구(meson)의 경로 관련 오류

이 문제는 주로 Visual Studio C++ 빌드도구가 누락되어 발생한다.

해결방법

https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/

  1. Visual Studio C++ 빌드 도구 설치(설치 중 "Windows용 C++ CMake tools" 같이 다운하면 좋음)
  2. 사전 빌드된 numpy설치 (1.24.3)
  3. 설치 재시도(사전 빌드 numpy설치 후)

☑️ 머신 러닝 비지도 학습

🔎 K-means-clustering

1. matplotlib의 패키지 의존성 문제로 설치 불가

  • 딥러닝, AI모델활용 강의에 사용하던 가상환경을 사용해서 모듈들의 버젼 때문으로 인지
  • 머신러닝 거성환경을 사용하고 update를 한 뒤 해결!

2. 클러스터링 모델 적용 후 생성된 군집 번호 열추가 안함

  • 할당 단계를 거치고 결과를 반환해줄 열을 추가 하지않아 오류가 난 것으로 인지
  • Cluster열을 추가하는 코드 추가
    # KMeans 모델 생성 및 군집 추가
    kmeans = KMeans(n_clusters=5, random_state=42)  # 군집 개수(n_clusters)는 조정 가능
    data['Cluster'] = kmeans.fit_predict(data_scaled)  # 클러스터 결과 추가

🔎 계층적 군집화

1. 불러오는 모듈 정의

from sklearn.cluster import AgglomerativeClustering
  • AgglomerativeClustering은 sklearn의 군집화 알고리즘 중 하나로, 상향식 계층적 군집화 방식
    import scipy.cluster.hierarchy as sch
  • scipy.cluster.hierarchy는 SciPy에서 계층적 군집화를 위한 다양한 함수와 도구를 제공하는 모듈
  • 덴드로그램(Dendrogram)을 시각화하는 dendrogram 함수와, 상향식 군집화를 수행하는 linkage 함수를 제공

2. 덴드로그램이란?

  • 데이터 포인트 간의 유사도와 계층적 클러스터링 결과를 시각화하는 트리 형태의 다이어그램
  • 데이터가 군집화되는 과정을 단계별로 표시
  • 특정 위치에서 가지가 나뉘는 위치를 기준으로 최적의 클러스터 수를 직관적으로 파악 가능

3. k개를 찾는 방법

  • 엘보우 방법
  • 실루엣 분석(-1~1): 1에 가까울수록 잘 분리된 군집
  • 지식 및 경험
  • 일반적으론 2~10개 정도 사용해서 최적을 찾음(많을수록 오버피팅이 될 수 있음)

4. plt.scatter 간소화

colors = ['red', 'blue', 'green', 'cyan', 'magenta']
for i, color in enumerate(colors):
    plt.scatter(X_scaled[y_hc == i, 0], X_scaled[y_hc == i, 1], s=100, c=color, label=f'Cluster {i+1}')
  • enumerate는 파이썬 내장 함수로, 리스트와 같은 순회 가능한(iterable) 객체를 반복하면서 각 요소의 인덱스와 값을 동시에 가져올 수 있게 해준다.

 


☑️ 회고

AI모델활용 강의를 들으며

 

아직 저는 API 키를 발급 받지 않은 상태에서 진행했기에

 

직접적으로 결과를 볼 수 없었는데

 

강사님께서 직접 음성 생성 AI을 활용하는 모습을 보여주셔서 굉장히 흥미로웠습니다.

 

머신러닝 비지도 학습을 진행하며

 

이전에 학습할 때 보다 학습하기 수월했으며 재미있었다.

 

하지만 아직도 모르는 부분 까먹은 부분이 많아 보인다.

 

마지막으로

 

강의를 듣다가 주말에 포트폴리오를 만드는 시간을 가지려했었단걸 떠올렸습니다.

 

오늘이 저의 생일이라 약속이 많아 진행하지 못했는데 이번 주에 도전하는 시간을 매일 1~2시간 정도 가져야겟습니다.

 

 


오늘은 AI모델활용 강의를 들으며 시작했습니다.

오늘의 목표는 4주차까지 듣고 1주차부터 다시 복습을 하여 AI모델 활용에 대한 이해도를 높이는게 목적입니다.

강의를 듣는 도중 gensim과 numpy의 호환성문제가 발생했고 uninstall 등 다양한 방법을 사용해보았고 결국 새로운 가상환경을 만들어 해결했습니다.

오늘 들은 강의는 코드를 작성하며 실습하는 수업이였습니다.

코드를 적으며 기억이 나지 않거나 처음 보는 코드들의 기능을 자세히 알아보며 강의를 들어 이해가 잘 되었습니다.

 

강의를 들으면서 정리한 새롭게 알게된 내용과 까먹은 내용들을 강의 순서에 맞게 정리하겟습니다.

그리고 마크다운을 사용해서 TIL을 작성하는게 익숙해지고있으며 이모지를 가져와서 더욱 가독성이 좋게 꾸며야 할 것 같습니다.

 

마지막으로 해결하지 못한 궁금한 점이있습니다.

 

API를 활용해서 모델을 만드는 실습을 했는데 GPT-4o는 내가 알기론 유료 플랜인데 코드를 실행시키면 요금이 청구 되나요? (코드를 실행 시켜보지는 않았습니다 무서버서ㅎㅎ:)


☑️ AI모델활용 3주차

3-1 허깅페이스와 트랜스포머

Trnasformers 라이브러리

Transformers 라이브러리는 다양한 NLP 모델을 쉽게 사용할 수 있도록 도와주는 Hugging Face의 오픈소스 라이브러리, 이 라이브러리를 통해 최신 NLP 모델들을 불러와 텍스트 생성, 감정 분석, 번역 등 다양한 작업에 활용할 수 있다.

참고! 모델을 가져와서 사용할 땐 vscode가 좋다!!

pipeline

  • pipeline이란?
    1. 텍스트 분류: 감정분석, 주제 분류, 등의 작업을 지원하며, 문장의 감정을 예측하거나 특정 카테고리분류 가능
    2. 질의 응답: 주어진 문서와 질문을 입력받아 문서에서 질문에 대한 답변을 찾는 작업
    3. 텍스트 생성: 주어진 문장을 기반으로 텍스트를 생성하며, 대화생성이나 문장 완성 가능
    4. 번역
    5. 요약: 긴 텍스트를 간단히 요약해 주요 내용 추출 가능
    6. 개체명 인식: 문장 내에서 이름, 위치ㅡ 조직 등을 식별하여 태그를 붙이는 작업
    7. 문장 유사도: 두 문장의 유사도를 계산하는 작업으로 의미적 유사성 측정 가능
  • pipeline의 요소 "text-generation" 그 외
    1. "text-generation": 텍스트 생성 작업 (예: 대화 생성, 글 작성)
    2. "sentiment-analysis": 간단한 감성어 분석
    3. "question-answering": 질의응답 작업
    4. "translation_xx_to_yy": 번역 작업 (예: "translation_en_to_fr"는 영어에서 프랑스어로 번역)
    5. "summarization": 텍스트 요약
    6. "ner": 개체명 인식 (Named Entity Recognition)
    7. "sentence-similarity": 문장 유사도 측정
    8. "fill-mask": 마스크된 텍스트 채우기 (BERT 모델 등에서 사용)
    9. "text-classification": 텍스트 분류 작업 (예: 감정 분석)

임베딩

  • 1. 워드 임베딩
    • 자연어 처리에서 단어를 벡터로 처리 (워드투백, 페스트 텍스트)
  • 2. 센텐스 임베딩
    • 문장 전체를 벡터로 처리
    • 문장간의 유사도 분석, 의미적 관계 분석
    • 딥러닝, 머신러닝의 입력으로 활용 가능
  • 3. 이미지 임베딩
    • 이미지 데이터를 벡터로 표현
    • 이미지의 픽셀 데이터를 저차원 벡터로 분석하고 이미지간의 유사도 분석 가능
    • 딥러닝의 CNN과 비슷하지만 여러가지 방법을 도입하는게 좋다.
  • 4. 그래프 임베딩
    • 그래프 구조를 벡터로 표현
    • 노드간의 관계를 벡터 공간에서 표현
    • 네트워크 분석, 추천 시스템에서 활용

유사도

  • 두 개의 데이터가 얼마나 비슷한지 수치적으로 표현하는 방법
  • 임베딩 벡터에 유사도를 측정하는 방법 (코사인 유사도, 유클리디안 루컬?)
  • 벡터간의 거리나 각도를 계산하는 방법이다.

 


☑️ 3주차 코드 분석

3주차 강의 필기

TIL/AI/AI_3.ipynb at main · onesowrd1/TIL

 

TIL/AI/AI_3.ipynb at main · onesowrd1/TIL

오늘 배운 것은?! Contribute to onesowrd1/TIL development by creating an account on GitHub.

github.com

 

 

트랜스포머를 활용한 모델사용

 

 1. max_length=100는 생성할 문장의 최대 길이를 지정한다.(항상 최대 길이로 문장을 만드는건 아니다.)
 2. num_return_sequences=2는 문장의 개수를 지정한다.

# 트랜스포머를 활용한 모델 사용
from transformers import pipeline

generator = pipeline("text-generation", model = "gpt2")

# 텍스트 생성
result = generator("I have a cat", max_length=100, num_return_sequences=2)
print(result)

 

감정어 분석

문장을 해석해서 어느정도의 감정을 캐치하고 값을 출력한다. ex) Positive


1. model="roberta-base"
버트기반 모델은 핵심적인 논리부분은 대규모 데이터셋을 통해 사전학습 시키고 마지막 레이어(번역, 분류 등) 목적에 따라 바꿀 필요가 있는 레이어는 사용자에게 맡기기도 한다.

 

# 감성어 분석
from transformers import pipeline

sentiment_analysis = pipeline("sentiment-analysis", model="roberta-base")
result = sentiment_analysis("I love you")
print(result)

 

워드 투 백

1. from gensim.models import Word2Vec

- 텍스트 데이터에서 단어 간의 의미적 유사성을 벡터로 표현하는 알고리즘

 

2. from gensim.utils import simple_preprocess

- 텍스트를 소문자로 변환하고 불필요한 기호를 제거하며 토큰화하여 단어 리스트로 반환

 

3. from scipy.spatial.distance import cosine

- 두 벡터 간의 코사인 거리를 계산하며, 유사도를 계산한다.

 

4. sentences

- 임베딩을 생성할 문장 리스트

 

5. processed = [simple_preprocess(sentence) for sentence in sentences]

- simple_preprocess 함수를 사용하여 각 문장을 토큰화하고 소문자로 변환하여 단어 리스트 반환

 

6. Word2Vec(sentences=processed, vector_size=5, window=5, min_count=1, sg=0)

- sentences=processed: 학습에 사용할 문장 리스트

- vector_size=5: 각 단어를 5차원 벡터로 임베딩하고. 이 크기는 사용자가 필요에 따라 조정할 수 있다.

- window=5: 컨텍스트 윈도우 크기로, 현재 단어와의 최대 거리(단어 수)를 나타낸다.

- min_count=1: 최소 등장 빈도로, 1로 설정했으므로 모든 단어가 임베딩에 포함된다.

- sg=0: Skip-gram 방식을 사용할지(1), CBOW 방식을 사용할지(0)를 결정하고. 여기서는 CBOW 방식을 사용.

 

7. dog = model.wv['dog']와 cat = model.wv['cat']

-  dog와 cat이라는 단어의 벡터 표현을 불러온다.

 

8. sim = 1 - cosine(dog, cat)

- cosine 함수를 사용하여 dog와 cat 벡터의 코사인 유사도를 계산

 

import numpy as np
from gensim.models import Word2Vec
from gensim.utils import simple_preprocess
from scipy.spatial.distance import cosine


sentences = [
    "The quick brown fox jumps over the lazy dog",
    "I love playing with my pet dog",
    "The dog barks at the stranger",
    "The cat sleeps on the sofa",
]

processed = [simple_preprocess(sentence) for sentence in sentences]
print(processed)

model = Word2Vec(sentences=processed, vector_size=5, window=5, min_count=1, sg=0)
dog = model.wv['dog']
cat = model.wv['cat']

sim = 1 - cosine(dog, cat)
print(sim)

☑️ AI모델 활용 4주차

4주차 강의 필기

TIL/AI/AI_4.ipynb at main · onesowrd1/TIL

 

TIL/AI/AI_4.ipynb at main · onesowrd1/TIL

오늘 배운 것은?! Contribute to onesowrd1/TIL development by creating an account on GitHub.

github.com

 

 

4-1 생성형 AI모델 직접 만들기 때 주의!!

생성형AI란?

  • 주어진 입력에 따라 새로운 콘텐츠를 생성하는 인공지능 기술
  • 몇 개의 단어를 입력받아 그에 맞는 문장 생성, 스케치를 바탕으로 이미지 생성

종류

  1. 텍스트 생성(GPT-3, ChatGPT 등)
  2. 이미지 생성(DALL-E, Stable Diffusion 등)
  3. 음악 생성(Magenta 등)

어려움

  1. 대규모 데이터 필요
  2. 컴퓨터 자원의 한계
  3. 모델 구조의 복잡성
  4. 훈련 과정의 불안정성

파인튜닝의 필요성!

  • 파인 튜닝은 사전 학습된 모델을 특정 작업에 맞게 추가로 학습시키는 과정으로, 생성형 AI 모델을 보다 쉽게 적용할 수 있는 방법
  • 사전 학습된 모델(시간 절감, 높은 성능, 도메인 특화, 작업 맞춤)

만들 때 고려할 부분

  1. 사전학습된 모델 활용
  2. 클라우드 서비스 활용
  3. 작은 프로젝트부터 시작하기

4-2 생성형 AI모델 기본 원리

랜덤성 Randomness

역할

  • 출력 데이터를 생성할 때 일정한 확률에 따라 다양한 선택지를 고려하게 한다.

확률 분포

  • 학습 데이터를 통해 얻은 확률 분포를 기반으로 새로운 데이터를 생성
  • 데이터의 분포를 학습해서 새로운 데이터를 생성할 수 있게 되는거다.

조건성 Conditionality

조건 입력

  • 입력된 조건에 따라 결과를 다르게 생성
  • 텍스트, 이미지, 오디오 등 다양한 형식의 조건이 있다.

중요성

  • 조건성 덕분에 생성형 모델은 매우 다양한 상황에 적응할 수 있다.(사용자가 원하는 특정 스타일, 주제, 분위기 등)

결론

  • 생성형 AI는 랜덤성과 조건성을 결합하여 다양한 결과를 생성한다.
  • 조건은 출력의 전반적인 틀과 스타일을 결정
  • 랜덤성은 결과의 세부적인 변화를 만든다.
  • 두 요소의 상호작용 덕분에 생성형 AI는 창의적이고 예측 불가능한 결과를 생성가능하게 만들어 준다.

※작동원리

텍스트 기반 생성형 모델의 원리

  1. 입력 토큰화
  2. 확률 예측
  3. 랜덤 선택: temperature 파라미터를 조정하여 랜덤성을 조절가능
  4. 반복 생성

이미지 기반 생성형 모델의 원리

  1. 텍스트 인코딩
  2. 이미지 생성
  3. 세부 사항 추가

오디오 기반 생성형 모델의 원리

  1. 텍스트 또는 멜로디 인코딩
  2. 오디오 생성
  3. 랜덤성 적용

4-3 Hugging Face와 Stable Diffusion

텍스트 생성

  1. 사전학습된 모델 사용
  2. 서비스를 활용해서 AIP의 형태로 언어를 형성

GPT-4o 모델로 텍스트 생성하기

API_KEY는 설정 파일이나 환경변수를 통해 관리해야한다. (코드상에 KEY작성 금지!!)

Stable Diffusion을 활용한 이미지 생성

Stable Diffusion 모델의 세부 조정

  • guidance_scale: 텍스트 조건을 얼마나 강하게 반영할지 결정하는 파라미터. 값이 높을수록 텍스트 설명에 충실한 이미지를 생성한다.
  • num_inference_steps: 이미지 생성 과정에서의 추론 단계 수를 지정한다. 단계 수가 많을수록 이미지의 품질이 향상되지만, 생성 시간이 길어진다.
image = pipe(prompt, guidance_scale=7.5, num_inference_steps=50).images[0]

☑️  4주차 코드 분석

1. 서비스를 활용해서 AIP의 형태로 언어를 형성

from openai import OpenAI

  • OpenAI API와 상호작용하는 데 필요한 기능을 제공

client = OpenAI()

  • OpenAI 클래스의 인스턴스를 생성하여 client 변수에 할당
  • client 객체를 통해 OpenAI API의 기능을 사용할 수 있ek.

client.chat.completions.create

  • completions.create 메서드를 호출하여 대화형 응답을 생성

role, content

  • 역할, 내용
# 2. 서비스를 활용해서 AIP의 형태로 언어를 형성

# JavaScript에 openai환경변수 설정
import os

os.environ["OPENAI_API_KEY"] = "<your OpenAI API key>"

# python
from openai import OpenAI

client = OpenAI()

completion = client.chat.completions.create(
    # 필요되는 정보들
  model="gpt-4o",
  messages=[
    {"role": "system", "content": "너는 환영 인사를 하는 인공지능이야, 농담을 넣어 재미있게해줘"},
    {"role": "user", "content": "안녕?"}  
  ]
)

print("답변: " + completion.choices[0].message.content)

 

2. Stable Diffusion 모델 예제 코드

 

from diffusers import StableDiffusionPipeline

  • 텍스트 설명을 기반으로 이미지를 생성하는 파이프라인을 제공

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4"

  • "CompVis/stable-diffusion-v1-4"는 모델의 이름이며, Hugging Face 허브에서 가져올 모델 경로
  • torch_dtype=torch.float16은 16비트 부동 소수점 데이터를 사용하도록 설정

pipe = pipe.to("cuda")

  • pipe 객체를 GPU로 옮긴다. "cuda"는 GPU 장치를 의미하며, 이를 통해 모델의 연산이 GPU에서 수행되어 속도를 높일 수 있다.

prompt = "A futuristic cityscape with flying cars at sunset"

  • 생성할 이미지의 텍스트 설명을 정의

image = pipe(prompt).images[0]

  • 텍스트 설명을 기반으로 이미지 생성 요청을 처리
  • images[0]은 생성된 첫 번째 이미지를 선택한다.

image.save("generated_image.png")

  • "generated_image.png"라는 파일명으로 저장
# stable diffusion 모델 예제 코드
from diffusers import StableDiffusionPipeline
import torch

# Stable Diffusion 파이프라인 로드
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16)
pipe = pipe.to("cuda")  # GPU 사용

# 텍스트 설명을 기반으로 이미지 생성
prompt = "A futuristic cityscape with flying cars at sunset"
image = pipe(prompt).images[0]

# 생성된 이미지 저장 및 출력
image.save("generated_image.png")
image.show()

+ Recent posts