728x90

인공지능 기술은 매 순간 빠르게 발전하고 있으며, 그 중심에는 언어 모델의 혁신이 자리잡고 있음

OpenAI의 최신 언어 모델인 ChatGPT-4는 기존의 ChatGPT-3 모델을 개선하여 여러 분야에서 더욱 향상된 성능을 보여주고 있음

이번 포스트에서는 ChatGPT-3와 ChatGPT-4의 주요 차이점을 살펴보고, 각각의 모델이 어떻게 사용자 경험을 변화시키고 있는지 정리함

모델 크기와 학습 데이터

ChatGPT-4는 ChatGPT-3보다 훨씬 큰 모델 크기를 가지고 있음

그리고 더 많은 데이터로 훈련되었기 때문에, 광범위한 지식을 바탕으로 다양한 주제에 대해 더 정확하고 상세한 정보를 제공함

문맥 이해와 일관성

ChatGPT-4는 문맥을 파악하고 유지하는 능력이 탁월함

복잡한 대화 흐름 속에서도 일관된 답변을 제공함으로써 사용자와의 대화가 더 자연스럽고 의미 있는 방향으로 이어질 수 있음

이는 기술적인 지원 또는 긴 설명이 필요한 상황에서 특히 유용함

다양한 언어에 대한 지원

다양한 언어 처리 능력은 ChatGPT-4의 또 다른 강점임

다국어를 더 효과적으로 처리할 수 있어, 영어가 아닌 다른 언어로 대화하는 사용자들에게도 높은 만족도를 제공함

창의적인 작업과 세부 처리

ChatGPT-4는 창의력을 필요로 하는 작업에서 더욱 뛰어난 성능을 발휘함

예를 들어 시나리오 작성, 시 쓰기 등의 창의적인 작업이나 복잡한 기술적 문제 해결에 있어서도 보다 세련되고 정교한 대응이 가능함

오류 인식과 처리

잘못된 정보의 인지와 수정 능력이 강화된 ChatGPT-4는 오류를 더 잘 파악하고 정정할 수 있음

이는 사용자가 더 신뢰할 수 있는 정보를 얻을 수 있게 하며, 오해의 소지가 있는 질문에 대해서는 사용자에게 추가적인 질문을 통해 정확한 답변을 도출해낼 수 있음

728x90

'AI > AI 트렌드' 카테고리의 다른 글

개발 / AI 기술 사이트  (0) 2024.06.19
728x90

프롬프트 엔지니어링(Prompt Engineering)은 인공지능(AI) 및 자연어 처리(NLP) 분야에서 사용자가 원하는 결과를 얻기 위해 모델에 제공하는 입력(prompt)을 설계하는 과정

이 과정은 특히 대형 언어 모델(LLM)에서 중요한 역할을 함

프롬프트란?

프롬프트(prompt)는 인공지능(AI) 및 자연어 처리(NLP) 시스템에서 모델에게 제공되는 입력 데이터를 의미함

모델이 수행할 작업의 맥락을 제공하고 원하는 결과를 얻기 위해 주어지는 명령어 / 질문 / 문장

프롬프트는 대화형 AI, 언어 모델, 챗봇 등 다양한 애플리케이션에서 사용됨

프롬프트 엔지니어링이란?

프롬프트 엔지니어링은 특정한 목표를 달성하기 위해 AI 모델에 주어지는 텍스트 입력을 최적화하는 기술

사용자가 원하는 답변을 얻기 위해 입력 문장을 어떻게 구성할지, 어떤 정보를 포함시킬지 등을 고민하는 과정

왜 프롬프트 엔지니어링이 중요한가?

  • 모델의 효율성 극대화: 적절한 프롬프트는 모델의 성능을 극대화하고, 더 정확하고 관련성 높은 결과를 얻을 수 있게 함
  • 사용자 경험 개선: 잘 설계된 프롬프트는 사용자가 AI와의 상호작용에서 더 만족스러운 경험을 얻을 수 있도록 도와줌
  • 시간과 비용 절감: 최적화된 프롬프트는 불필요한 반복 시도를 줄이고, 더 빠르게 원하는 결과를 얻을 수 있게 함
  • 문제 해결 능력 향상: 복잡한 문제나 질문에 대해 더 정교한 답변을 얻을 수 있어 다양한 비즈니스 및 연구 분야에서 유용함

프롬프트 엔지니어링의 기법

  • 명확하고 구체적인 질문: 모호한 질문보다는 명확하고 구체적인 질문을 통해 모델이 보다 정확한 답변을 제공하도록 유도함
    • 예: "기후 변화의 원인"보다는 "기후 변화의 주요 원인 세 가지를 설명하라"고 질문
  • 콘텍스트 제공: 필요한 배경 정보를 제공하여 모델이 더 나은 맥락 이해를 할 수 있게 함
    • 예: "프로메테우스 신화" 대신 "그리스 신화에서 프로메테우스가 인간에게 어떤 선물을 주었는지 설명하라"고 질문
  • 구조화된 형식 사용: 목록, 표 등 구조화된 형식을 통해 명확한 정보를 제공
    • 예: "자동차의 장단점을 나열하라"보다는 "자동차의 장점과 단점을 각각 세 가지씩 나열하라"는 식으로 구체화
  • 다양한 접근법 테스트: 동일한 질문을 여러 방식으로 제시하여 가장 효과적인 프롬프트를 찾음
    • 예: "파리 여행 가이드" 대신 "파리에서 방문할 만한 명소와 맛집 추천"과 같은 구체적 요청 시도

프롬프트 엔지니어링의 사례

  • 고객 지원: 챗봇이 고객의 질문에 정확하게 답변할 수 있도록 프롬프트 설계
  • 교육: 학생들이 AI 튜터로부터 유용한 학습 정보를 얻을 수 있도록 효과적인 질문을 작성
  • 연구: 연구자들이 AI를 활용해 특정 주제에 대한 심도 있는 정보를 얻기 위한 프롬프트 작성

결론

프롬프트 엔지니어링은 AI 및 NLP 분야에서 매우 중요한 역할을 하며, 효과적인 프롬프트 설계를 통해 모델의 성능을 극대화하고 사용자 경험을 향상시킬 수 있음

이는 다양한 산업과 분야에서 적용 가능하며, 지속적인 연구와 실험을 통해 더 나은 방법을 찾아나가는 것이 필요함

728x90

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

LLM이란?  (0) 2024.06.19
728x90

LLM(대형 언어 모델, Large Language Model)은 자연어 처리(NLP)와 인공지능(AI) 분야에서 사용되는 컴퓨터 모델

이 모델은 대규모 텍스트 데이터를 기반으로 학습되어 인간의 언어를 이해하고 생성할 수 있는 능력을 가짐

LLM의 대표적인 예로는 OpenAI의 GPT-4, Google's BERT, Facebook의 RoBERTa 등이 있음

 

LLM의 주요 특징

  1. 대규모 학습 데이터: LLM은 수십억 개의 문서와 문장을 포함하는 대규모 텍스트 데이터를 사용해 학습함. 이를 통해 다양한 주제와 맥락에서 언어를 이해하고 생성할 수 있게 됨.
  2. 언어 이해 및 생성 능력: LLM은 질문에 대한 답변, 텍스트 요약, 번역, 글쓰기 보조 등 다양한 자연어 처리 작업을 수행할 수 있음. 이는 LLM이 문맥을 이해하고 적절한 언어 출력을 생성할 수 있기 때문임.
  3. 전이 학습(Transfer Learning): LLM은 특정 작업에 맞게 미세 조정(Fine-tuning)될 수 있음. 즉, 일반적인 언어 모델로서 학습된 후, 특정 도메인이나 작업에 맞게 추가 학습을 통해 성능을 향상할 수 있음.
  4. 연속성과 일관성: LLM은 긴 텍스트 내에서 문맥을 유지하고 일관된 답변을 제공할 수 있음. 이는 모델이 텍스트의 구조와 패턴을 잘 학습했기 때문임.

LLM은 다양한 산업과 분야에서 활용될 수 있음

예를 들어, 고객 서비스에서 자동 응답 시스템, 콘텐츠 생성, 의료 분야에서 환자의 질문에 대한 답변 제공, 법률 자문 등 다양한 응용 사례가 있음

LLM은 인간과 컴퓨터 간의 상호작용을 더욱 자연스럽고 효율적으로 만드는 데 중요한 역할을 하고 있음

728x90

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

프롬프트 엔지니어링이란?  (1) 2024.06.19
728x90

superb-ai MLOps 뉴스레터

 

MLOps Insight 뉴스레터 구독하기

슈퍼브에이아이 - MLOps 뉴스레터 구독하기 슈퍼브에이아이가 엄선한 글로벌 MLOps 소식과 인사이트, 슈퍼브에이아이 플랫폼 업데이트를 가장 빠르게 받아보세요!

info.superb-ai.com

 

https://news.hada.io/

 

GeekNews - 개발/기술/스타트업 뉴스 서비스

개발 뉴스, 기술 관련 새소식, 스타트업 정보와 노하우, 세상의 재미난 것들을 좋아하는 사람들을 위한 뉴스 사이트. 이메일 뉴스레터/트위터/슬랙 봇으로 구독 가능

news.hada.io

 

https://www.aitimes.com/

 

AI타임스

AI타임스(aitimes.com)는 인공지능 중심의 전문 미디어입니다.

www.aitimes.com

 

https://devocean.sk.com/blog/index.do

 

데보션 (DEVOCEAN) 기술 블로그 & 커뮤니티

데보션 (DEVOCEAN) 기술 블로그 , 개발자 커뮤니티이자 내/외부 소통과 성장 플랫폼

devocean.sk.com

 

https://medium.com/

 

Medium – Where good ideas find you.

Medium is an open platform where readers find dynamic thinking, and where expert and undiscovered voices can share their writing on any topic.

medium.com

 

https://brunch.co.kr/@sicle-official/35

 

개발 실력을 위한 IT기업 기술 블로그 45곳 모음

2020.08 업데이트 | 최근 국비교육, 부트캠프 등의 교육을 수강하고 개발자로 커리어를 전환하신 비전공자분들을 쉽게 볼 수 있습니다. 기술이 더욱 빠르게 발전하며, 개발 직군은 지속적인 학습

brunch.co.kr

 

728x90

'AI > AI 트렌드' 카테고리의 다른 글

ChatGPT-3와 ChatGPT-4, 무엇이 달라졌을까?  (0) 2024.06.20
728x90

빌드 프로세스를 자동화하는 것은 개발자들에게 매우 유용함

이를 효율적으로 수행하기 위해 Makefile을 사용하는 것은 일반적인 방법 중 하나

makefile이란?

Makefile은 소프트웨어 빌드 프로세스를 자동화하기 위한 텍스트 파일

가장 많이 사용하는 반복적인 작업 표준화하거나, 여러 작업을 한꺼번에 실행하는 표준화된 방법을 제공함

여러 명령어를 포함할 수 있으며, 변수, 조건문, 반복문 등을 사용하여 복잡한 빌드 프로세스를 자동화할 수 있음

makefile 기본 구조

target: dependencies
    command
  • target : 생성하고자 하는 파일의 이름이나 작업의 이름
  • dependencies : 해당 작업을 수행하는 데 필요한 파일이나 작업
  • command : 해당 작업을 수행하는 명령어

makefile을 이용한 빌드 자동화 구현 예시 (python)

# 작업디렉토리 구조
src
 ㄴ __init__.py
 ㄴ point_location.py
tests
 ㄴ test_point_location.py
Makefile
# src/point_location.py
from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

def location(p: Point) -> str:
    """맵에서 좌표에 해당하는 객체를 검색"""
    return f'{p.x, p.y}'
# tests/test_point_location.py
from src.point_location import Point, location

def test_location():
    # 포인트 객체 생성
    p = Point(1, 2)
    
    # 좌표를 검색하고 결과를 확인
    result = location(p)
    assert result == "(1, 2)"
# Makefile
# .PHONY는 make 명령어를 실행할 때 해당 명령어를 실행하도록 하는 것
.PHONY: typehint
typehint:
    mypy --ignore-missing-imports src/

.PHONY: test
test:
    pytest tests/

.PHONY: lint
lint:
    pylint src/

.PHONY: checklist
checklist: typehint test lint

.PHONY: black
black:
    black -l 79 *.py

.PHONY: clean
clean:
    find . -type f -name "*.pyc" | xargs rm -fr
    find . -type d -name "__pycache__" | xargs rm -fr
더보기

# 실행 명령어

export PYTHONPATH="${PYTHONPATH}:$(pwd)"

make checklist mypy --ignore-missing-imports src/

 

# 실행결과

Success: no issues found in 2 source files

pytest tests/ ============================================ test session starts =============================================

platform darwin -- Python 3.8.10, pytest-8.1.1, pluggy-1.4.0

rootdir: /Users/stone/Desktop/pythonworkspace

collected 1 item

 

tests/test_point_location.py . [100%]

 

============================================= 1 passed in 0.02s ==============================================

pylint src/

************* Module src.point_location

src/makefile_test.py:1:0: C0114: Missing module docstring (missing-module-docstring)

src/makefile_test.py:4:0: C0115: Missing class docstring (missing-class-docstring)

 

----------------------------------- Your code has been rated at 6.67/10

make: *** [lint] Error 16

728x90

'AI > ML ops' 카테고리의 다른 글

DVC 기초 및 사용법  (0) 2022.11.02
대용량 데이터 버전관리 오픈소스 LFS vs DVC  (0) 2022.10.28
728x90

DVC (Data Version Control)

DVC는 Git을 기반으로 하는 새로운 유형의 데이터 관리 무료 오픈소스

DVC 용도

일반적으로는 git과 함께 사용하여 git tag를 통해 대용량 데이터 버전관리를 할 때 유용하게 쓰인다.
git에서는 2GB 이상의 데이터를 push할 수 없기 때문에, 대용량 폴더는 dvc로 관리하고 git ignore에 명시하여 git이 추적하지 않도록 한다.

대용량 폴더는 dvc를 이용하여 데이터를 원격저장소에 저장한다.
dvc가 관리하는 파일들은 [폴더명.dvc]라는 메타정보파일이 남는다.
이 메타정보 파일에는 원격저장소에 저장된 데이터 경로와 데이터 size, 파일개수가 쓰여있다.
git은 이 메타정보 파일을 추적하여 버전관리를 한다.

예시)

Workspace를 보면 train.py, pred.py, data폴더, model폴더가 존재한다.
이 중 data와 model은 대용량폴더이기 때문에 dvc로 관리한다.
그렇게 되면 git repository에는 train.py, pred.py와 data와 model 폴더의 메타정보를 담은 data.dvc, model.dvc 파일이 관리되고, 데이터는 원격저장소로 push되어 원격저장소 내에 저장되어있다.
model.dvc 내용을 살펴보면 model의 원격저장소 위치와 size, 파일개수, path 정보가 들어있다.
원격저장소에서 c6/efae81ddbbf2a8a88d6d3790e60e61.dir을 찾아가서 살펴보면 원격저장소 파일경로와 실제파일명이 매칭되어 적혀있다.
10/d2a131081a3095726c5721ed31c21f의 내용을 확인하면 Workspace/model/model1.pt 파일내용을 볼 수 있다

 

dvc는 왜 파일을 이렇게 복잡한 파일명으로 관리하는걸까?
dvc는 해시값을 이용하여 데이터를 관리한다.
해시값이란 파일의 데이터를 해시 함수(Hash Funtion) 또는 해시 알고리즘(Hash Algorithm)을 통해 계산하여 산출된 값으로 이러한 값은 해당 파일의 고유한 값이다.
해시값은 고유한 값이기 때문에 두 파일의 해시값이 같다는 것은 두 파일이 동일한 파일임을 의미한다.
해시값을 이용하여 데이터를 저장하면 동일한 파일을 중복저장하지 않을 수 있다.
파일명만 다르고 내용이 동일한 파일이 있는 경우, 데이터는 한 번만 저장되고 동일한 해시 값을 참조한다.

# model1과 model2의 파일내용이 같다고 가정하면
[{“md5”:” 10d2a131081a3095726c5721ed31c21f”, “relpath”:”model/model1.pt},
{“md5”:” 10d2a131081a3095726c5721ed31c21f”, “relpath”:”model/model2.pt}]

DVC 장점

DVC 튜토리얼 (기본 사용법)

workspace로 사용하기 위한 gitrepo폴더를 만들고 그 안에서 작업함
gitrepo / samplemodel / modelfile 만듦

dvc 설치

pip install dvc

dvc 시작 (dvc init)

dvc → git과 같이 사용

cd C:\Users\stone\seokhwa_practice\DVC\gitrepo
# set git repository
git init
git remote add origin https://github.com/seokhwaLee/DVCtest
# set dvc
# pip install dvc
dvc init
# git commit
git commit -m "Initialize DVC"

dvc → git 없이 사용 가능

dvc init --no-scm
dvc remote add [remote명] [AI모델저장소storage경로]

파일 또는 디렉토리 추적 :  dvc add {추적할폴더}

aimodel폴더 내용 추적

dvc add samplemodel
git add samplemodel.dvc .gitignore
# git status : add 상태 확인
git commit -m "add model"

변경사항 반영 : dvc commit

# 추적설정 되어있는 폴더/파일의 변경사항 반영
dvc commit # git과 같이 commit message를 따로 넣어주는 옵션은 없음

저장 및 공유

원격 저장소 추가 : dvc remote add {원격저장소명} {원격저장소위치}

# 원격 저장위치 설정
# model 내용을 두 개의 원격저장소에 push해보기
dvc remote add aimodel C:\Users\stone\seokhwa_practice\DVC\aimodel
# 원격저장소 config git add
git add .dvc/config
git commit -m "Configure remote storage"

원격저장소에 push하기 : dvc push -r {원격저장소명} {add폴더}

# 원격저장소로 위에서 add한 data push
dvc push -r aimodel samplemodel
# add한 것 중 특정 데이터만 push 가능
dvc push aimodel.dvc -r aimodel samplemodel

하나의 git repository에서 여러 개의 원격저장소에 push 가능

# 원격 저장소 추가
dvc remote add data C:\Users\stone\seokhwa_practice\DVC\project
# 원격저장소 config git add
git add .dvc/config
git commit -m "Configure remote storage"

dvc add sampledata
git add sampledata.dvc .gitignore

# git status : add 상태 확인
git commit -m "add data"
dvc push -r data sampledata

이미 푸시한 내용 다른 원격저장소에 푸시 가능

# 새로운 원격 저장소 추가
dvc remote add testtest C:\Users\stone\seokhwa_practice\DVC\testtest
# 원격저장소 config git add
git add .dvc/config
git commit -m "Configure remote storage"

dvc push -r testtest sampledata

원격저장소로부터 데이터 불러오기 : dvc pull {불러올데이터파일명.dvc}

dvc pull samplemodel.dvc -r aimodel

데이터 삭제

dvc remove {삭제할데이터파일명.dvc} : dvc파일 삭제
dvc gc -w -c -r {원격저장소명} -f : 원격저장소에서 dvc workspace에서 추적하지 않는 파일 삭제

remove를 이용하여 추적 취소 후, gc를 이용하여 dvc workspace에서 추적하지 않는 파일 원격 저장소에서 삭제한다

dvc remove sampledata.dvc
dvc gc -w -c -r testtest -f

 

참고 링크

DVC homepage
DVC github
DVC docs

 

 

대용량 데이터 버전관리 오픈소스 LFS vs DVC

대용량 데이터를 체계적으로 관리하는 방안이 필요해져, 대표적인 두 가지 오픈소스를 비교해보았다. Git LFS는 유료 서비스라는 점에서 조건미달이었기 때문에, 깊이 공부하지 않고 DVC를 선택하

bigseok.tistory.com

 

728x90
728x90

대용량 데이터를 체계적으로 관리하는 방안이 필요해져, 대표적인 두 가지 오픈소스를 비교해보았다.

Git LFS는 유료 서비스라는 점에서 조건미달이었기 때문에, 깊이 공부하지 않고 DVC를 선택하여 서비스를 구현하였다.

DVC 사용법 관련 포스팅은 추후 다른 게시글에서 자세히 다루어볼 예정이다.

 

Git LFS (Large File Storage)

Git LFS는 대용량 파일을 별도의 서버에 올리고, 원래 위치에는 포인터를 남긴다.

즉, 대용량 파일은 다른 서버에서 받아오고 있지만, 포인터가 설정되어 있기 때문에 사용자 입장에서는 Git, Push, Pull 등을 그대로 사용할 수 있다.

Git LFS는 실제 파일(다른 곳에 저장됨)에 대한 참조 역할을 하는 포인터 파일을 만든다.

GitHub는 저장소에서 이 포인터 파일을 관리한다.

저장소를 clone할 때, GitHub는 포인터 파일을 보고 큰 파일을 찾아온다.

사용중인 Git LFS version을 추적한 다음 파일의 고유 식별자(oid)를 추적한다.

Git LFS pointer 예시

version https://git-lfs.github.com/spec/v1
oid sha256:4cac19622fc3ada9c0fdeadb33f88f367b541f38b89102a3f1261ac81fd5bcb5
size 84977953

Price

github

gitlab

 

DVC (Data Version Control)

DVC는 Git을 기반으로 하는 새로운 유형의 데이터 버전 관리 무료 오픈소스이다.

DVC는 설치가 빠르고 특별한 인프라가 필요하지 않으며 API나 외부 서비스에 의존하지 않는 독립 실행형 CLI 도구이다.

Git으로 .gitignore(데이터파일이 git에 저장되는 것 방지)과 .dvc(dvc 정보)파일을 통해 데이터 버전 정보를 관리한다.

Git의 Tag/Branch 등을 이용해 dataset과 ML model을 versioning하고 관리

.gitignore : 대용량데이터폴더는 git에서 무시하도록 git ignore에 명시

/[대용량데이터폴더명]

.dvc/config : 등록된 원격저장소 정보 (실제 대용량 데이터 저장 위치)

[core]
    remote = datas
['remote "datas"']
    url = C:\Users\stone\seokhwa_practice\DVC\data-repo

[대용량데이터폴더명].dvc : [대용량데이터폴더]의 사이즈, 파일개수, 경로, 원격저장소 메타정보 위치

outs:
- md5: c6efae81ddbbf2a8a88d6d3790e60e61.dir
  size: 3980577
  nfiles: 185
  path: datas

DVC를 통해 실제 데이터를 관리

간단한 명령어를 통해 원격저장소(S3, Google Cloud, Azure, HDFS, SSH server 등)와 연결하여 데이터를 push 하거나 pull 할 수 있다.

dvc remote add -d datas C:\Users\stone\seokhwa_practice\DVC\data-repo

 

LFS vs DVC

두 가지 서비스 모두 사용법은 유사하다.

하지만 LFS 서버를 무료로 사용할 경우 데이터 사이즈 제약이 있고, DVC 의 경우 무료 > data 를 저장할 storage 만 설정해주면 된다.

 

참고 사이트

728x90

'AI > ML ops' 카테고리의 다른 글

Makefile을 이용한 빌드 자동화 스크립트  (0) 2024.04.21
DVC 기초 및 사용법  (0) 2022.11.02

+ Recent posts