AI
[AI] AI 맛보기
dud9902
2025. 1. 8. 20:39
학원에 AI 관련 수업을 듣기 시작한지 어느덧 열흘이 넘은 지금에서야 글을쓰는 포스팅이다...
오늘은 강사님께서 알려주신 AI 기초 내용으로 글을 작성해보려고 한다.
머신러닝·딥러닝 개념과 모델 활용
1. 머신러닝과 딥러닝
- 머신러닝(ML): 정형화된 데이터를 다룬다.
예) 테이블 형태의 데이터(행과 열), 주가 예측, 간단한 분류·회귀 등 - 딥러닝(DL): 비정형 데이터를 다룬다.
예) 이미지(CV, 시각), 텍스트(NLP, 자연어), 오디오(Audio) 등
2. 멀티모달(Multimodal)이란?
- 서로 다른 두 가지 모달을 섞어서 사용하는 것이다.
예) 이미지+텍스트, 텍스트+오디오 등
3. 모델 사용 방식
A. 모델을 바로 가져다 쓰기
- 패키지 로드
- 모델 로드
- 전처리(Pre-processing)
- 모델 추론(Inference)
- 후처리(Post-processing): 응답값을 원하는 형태로 가공
B. 모델을 학습해서 쓰기
1. 패키지 로드
2. 모델 로드
데이터 로드
3. 데이터 전처리 및 정답 데이터셋 구축
모델 학습 및 검증
정답 데이터셋으로 모델 평가
4. 모델 추론(Inference)
5. 후처리(Post-processing)
C. API 사용하기
- API 사이트 문서(Docs)와 블로그 확인
- 예제 코드 참고
- 결과값 도출
- 아이디어 적용: 이 API를 어떻게 적용할지 기획
- 데이터 로드 및 전처리, 프롬프트 튜닝
- 후처리(Post-processing)
인공지능(AI)을 어떻게 학습할 것인가?
- 하고 싶은 Task 정하기
- 예) CV(컴퓨터 비전), NLP(자연어 처리), 오디오 분석 등
- 구현 방법 찾기
- 예) Hugging Face Models, GitHub, Google 검색, API 활용 등
- Trade-off 확인
- 한쪽 성능을 높이면 다른 한쪽이 떨어지는 경우 고려
- GPU 성능 및 환경 점검
- cmd > nvidia-smi 를 통해 GPU 리소스를 확인한다.
- LLM(Large Language Model) 지원 가능 여부를 확인한다.
- 토큰 개수 제한 확인한다.
- 양자화(Quantization): 모델을 작게 만들어서 적은 리소스로 큰 모델 기능을 어느 정도 활용한다. (성능 저하 가능성 있음)
다양한 API와 서비스
- 빅테크 기업 API
- ChatGPT, Midjourney, CLOVA OCR, Claude, Cloud Vision API, RTZR STT(한국어 특화) 등
- ChatGPT 멀티모달 사용 예시
- 음성 입력을 텍스트로 변환(STT) → 변환된 텍스트를 ChatGPT에 입력 → 다시 음성으로 출력(TTS)
- 내부적으로 모델 2개를 사용하는 개념(STT 모델 + ChatGPT)
핵심 개념
- Embedding(임베딩)
- 모델이 이해할 수 있도록 입력값을 벡터(숫자)로 변환하는 과정이다.
LLM은 무엇인가?
- LLM(Large Language Model)
- 방대한 데이터로 사전 학습된 딥러닝 모델(초대형 언어 모델)이다.
- 예) ChatGPT, Claude, Gemini 등
- 오픈소스 모델
- 최신 정보 부족 및 환각(Hallucination) 발생 가능성이 있다.
- 예) Llama, Mistral, Solar, Qwen, DeepSeek 등
한계를 극복할 수 있는 방법
- RAG(Retrieval-Augmented Generation)
- 최신 정보 부족, 할루시네이션 문제를 해결하기 위해 외부 데이터베이스를 참고하여 답변을 생성한다.
- AI 에이전트(AI Agent)
- LangChain, crewAI 등을 활용하여 자율적 수행을 한다.
어떻게 AI Server와 연결할것인가?
- Fastapi로 만들기
- 알맞은 host, port 열어주기
- 데이터 받기(거의 POST)
- 추론
- 결과값 return
AI Server와 통신할 때 주의사항!!
- requirements.txt 사용
- 동일 환경 재현성을 위해 의존 라이브러리를 기록
- pip list —format=freeze > requirements.txt
- pip install -r requirements.txt 로 설치
- .env 파일 사용
- API Key 등 민감 정보 관리
- .gitignore 설정
- 업로드하면 안 되는 정보(민감 정보, 불필요 파일) 제외
Ngrok를 이용한 로컬 서버 외부 연결
- Ngrok
- 외부에서 로컬 컴퓨터로 접근하는 방법이다.
- 무료 도메인을 받아 로컬 포트를 외부에 공개한다.
- GET 요청 시 Header 추가를 통해 인증/보안 처리를 할 수도 있다.
const API_URL = 'https://gnat-suited-weekly.ngrok-free.app/api/posts';
const HEADERS = {
'Content-Type': 'application/json',
'ngrok-skip-browser-warning': '69420',
};
const fetchPosts = async () => {
try {
const response = await axios.get(API_URL, { headers: HEADERS });
// ...
} catch (error) {
// ...