1. 생성형 AI
* 생성형 AI는 주어진 데이터를 학습하고 이를 바탕으로 새로운 콘텐츠를 만들어내는 인공지능 기술입니다.
* 예를 들어, 이런 AI는 사람처럼 글을 쓰거나 그림을 그릴 수 있습니다.
* 기본적으로 많은 데이터를 분석해 패턴을 배우고, 그 패턴을 사용해 새로운 것을 창작하는 것입니다.
* 그래서 질문에 대한 답변이나 창의적인 글쓰기, 이미지 생성 등 다양한 작업을 할 수 있도록 도와줍니다.
예를 들어,
# copilot에 입력한 텍스트
# 세상에서 제일 실력있는 AI 개발자를 상상하여 그려줬으면 좋겠어.
# 한국인이고 잘생긴 얼굴로 수염이 있고 안경을 쓴 얼굴로 그려줘
-->
그려달라고 하게되면 사람얼굴을 만들어준다
생성된 얼굴은 사람마다 다를수가 있다
2. LLM과 SLM
1. LLM (Large Language Model)
* LLM은 대형 언어 모델을 의미합니다.
* 이 모델은 매우 큰 데이터셋을 기반으로 학습되며, 수억에서 수조 개의 파라미터를 가지고 있습니다.
* 주로 딥러닝 기술을 활용하며, 자연어 처리(NLP) 작업에서 뛰어난 성능을 발휘합니다.
* LLM은 인간의 언어를 이해하고 생성하는 데 매우 뛰어난 능력을 보이며, 예를 들어 텍스트 생성, 번역, 질문 응답, 요약 등 다양한 작업을 처리할 수 있습니다.
예) ChatGPT, Bloom, Gemini, LLaMa, Mistral 등
2. SLM (Small Language Model)
* SLM은 소형 언어 모델을 의미하며, LLM과 비교하여 상대적으로 작은 크기의 모델입니다.
* SLM은 적은 수의 파라미터를 가지고 있으며, 특정 작업에 대해 최적화된 모델입니다.
* 이런 모델은 대형 모델보다 계산 자원이 적게 들고, 빠른 속도와 적은 메모리를 요구하지만, 성능은 LLM에 비해 다소 제한적일 수 있습니다.
예) T5-Small, GPT-NeoX, ALBERT, MobileBERT 등
3. 파라미터
* 파라미터는 인공지능 모델이 학습하면서 조정하는 숫자들입니다.
* 쉽게 말해, 파라미터는 AI 모델의 "뇌의 연결 강도"와 같습니다.
* AI가 텍스트나 이미지를 이해하고 생성할 때, 파라미터는 어떤 단어나 개념이 서로 얼마나 관련이 있는지를 결정합니다. * 예를 들어, "고양이"라는 단어가 나오면 "털", "동물", "야옹" 같은 단어들과 연결될 가능성을 파라미터들이 계산합니다.
* 이 숫자들은 학습 과정을 통해 조정되어 모델이 점점 더 똑똑해지게 만듭니다.
* 모델이 복잡할수록 더 많은 파라미터가 필요합니다.
* LLM 같은 대규모 모델은 수십억 개 이상의 파라미터를 가지고 있어 복잡한 질문에 대한 답변을 잘할 수 있습니다.
* 반면, SLM은 더 적은 파라미터를 가지고 있어 간단한 작업에 적합합니다
y = wx + b
여기서 x는 데이터가 수만개 쌓인다
4. 텍스트 생성형 GPT
* 텍스트 생성형 GPT(Generative Pre-trained Transformer)는 대규모 데이터셋을 기반으로 훈련된 인공지능 모델로, 주어진 입력에 따라 자연스러운 텍스트를 생성할 수 있습니다.
* 이 모델은 사람의 언어를 이해하고 생성하는 능력을 바탕으로, 질문에 답하거나 글을 작성하고, 창의적인 작업을 수행하는 데 사용됩니다.
* GPT는 다양한 문맥을 처리할 수 있으며, 글의 흐름과 의미를 일관되게 유지하며, 다양한 주제에 대해 텍스트를 생성할 수 있는 능력을 지니고 있습니다.
4-1. 텍스트 생성형 GPT API
주소 : https://platform.openai.com/docs/models
4-2. GPT-3.5 Turbo
* GPT-3.5-turbo는 한 번에 16,385개의 토큰을 기억하고 사용할 수 있으며, 최대 4,096개의 토큰을 생성할 수 있습니다.
* 이는 모델이 매우 긴 텍스트를 처리하거나 긴 답변을 생성할 수 있는 능력을 가지고 있다는 것을 의미합니다.
5. 토큰(Token)
* 토큰은 모델이 처리하는 텍스트의 작은 단위입니다.
* 하나의 토큰은 단어, 부분적인 단어, 또는 심지어 공백이나 구두점일 수 있습니다.
* 예를 들어, "나는 학교에 간다"라는 문장은 5개의 토큰(나는, 학교, 에, 간다)으로 나눠질 수 있습니다.
* GPT 모델은 텍스트를 처리할 때 이 토큰들을 기반으로 학습하고, 예측을 생성합니다.
5-1. 토큰은 과금 단위로 사용합니다.
[가격]: https://openai.com/api/pricing/
[토큰 확인] : https://platform.openai.com/tokenizer
5-2. 토큰화
* 토큰화(Tokenization)는 자연어 처리(NLP)에서 텍스트를 모델이 이해할 수 있는 작은 단위인 '토큰'으로 분리하는 과정입니다.
* 토큰은 대개 단어, 부분 단어, 구두점, 공백 등으로 구성될 수 있습니다. 이 과정은 언어 모델이 텍스트를 효과적으로 이해하고 처리할 수 있도록 돕습니다.
* 토큰화 방법은 문장을 어떻게 나누느냐에 따라 다르며, 각 방법은 모델이 텍스트를 어떻게 처리할지에 큰 영향을 미칩니다.
5-3. 토큰화 방법
* 단어 단위 토큰화 (Word-level Tokenization): 문장을 단어 단위로 나눕니다.
* 예) "나는 학교에 간다" → ["나는", "학교에", "간다"]
* 서브워드 단위 토큰화 (Subword-level Tokenization): 단어를 더 작은 단위로 나눕니다. 주로 길고 복잡한 단어를 나누는 데 사용됩니다.
* 예) "학교에" → ["학", "교", "에"]
* 문자 단위 토큰화 (Character-level Tokenization): 문장을 하나하나의 문자로 나눕니다.
* 예) "학교" → ["학", "교"]
* BPE (Byte Pair Encoding): 자주 등장하는 문자 쌍을 하나의 서브워드로 합치는 방법입니다.
* 예) "low"와 "est"라는 단어가 있을 때, "low"와 "est"를 합쳐서 "lowest"와 같은 서브워드를 만드는 방식입니다.
* 자주 나오는 문자 쌍을 합쳐서 더 효율적인 토큰을 만들 수 있습니다.
* 이 방식은 주로 GPT와 같은 모델에서 사용됩니다.
6-1. .env
* .env 파일은 환경 변수(Environment Variables) 를 저장하는 파일로, 주로 애플리케이션의 설정 정보나 비밀 키(secret key), 데이터베이스 비밀번호 등의 중요한 정보를 코드와 분리하여 관리하기 위해 사용됩니다.
* 이렇게 중요한 정보를 코드 안에 하드코딩하는 대신 .env 파일에 저장하고, 이를 코드에서 읽어오는 방식으로 보안과 유연성을 높일 수 있습니다.
6. GPT API를 이용한 간단한 실습
6-1.. env 파일이 있어야 돌아간다
. env 파일에는 GPT에서 만든 API KEY를 넣어서 만들어주면 된다
메모장에 만들어서 저장해 주면 된다.
동작을 하려면. env 파일을 붙여준다
예시)
6-1.
#env 설치
!pip install python-dotenv
6-2.
##각종 import 할 값을 설치해주면 된다
import os
from openai import OpenAI
from dotenv import load_dotenv
6-3.
#설치가 완료되면 print가 잘 실행된다.
load_dotenv()
6-4.
#openai도 업그레이드 해준다
!pip install --upgrade openai
6-5.
import os
from openai import OpenAI
from dotenv import load_dotenv
#에러 발생시 런타임에서 세션 다시 시작 및 모두 실행
client = OpenAI(
api_key = os.getenv('API_KEY')
)
6-6.
response = client.chat.completions.create(
model = 'gpt-3.5-turbo-0125',
messages=[{"role":"user", "content":"안녕하세요? 오늘 어때요?"}]
)
6-7.
response
-->
ChatCompletion(id='chatcmpl-Acl9DecMlwZkM6atsHL3UPwycoy9X', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='안녕하세요! 제게 물어봐 주셔서 감사합니다. 오늘은 저도 잘 지내고 있어요. 여러분은 어떠세요? 혹시 무슨 일 있으신가요? 이야기해 주시면 같이 이야기 나누면서 즐거운 시간 보낼 수 있을 것 같아요. 😊', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None))], created=1733801063, model='gpt-3.5-turbo-0125', object='chat.completion', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=103, prompt_tokens=22, total_tokens=125, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=0, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0)))
6-8.
response.choices[0].message.content
-->
안녕하세요! 제게 물어봐 주셔서 감사합니다. 오늘은 저도 잘 지내고 있어요. 여러분은 어떠세요? 혹시 무슨 일 있으신가요? 이야기해 주시면 같이 이야기 나누면서 즐거운 시간 보낼 수 있을 것 같아요. 😊
'LLM(Large Language Model)의 기초 > LLM 서비스 기초' 카테고리의 다른 글
6. FAST API (8) | 2024.12.13 |
---|---|
2. Gradio (4) | 2024.12.11 |
5. 프롬프트 엔지니어링 (8) | 2024.12.11 |
3. 몽고 DB 와 파이썬 (6) | 2024.12.10 |
5-2. 프롬프트 엔지니어링 (12) | 2024.12.10 |