본문 바로가기
사이드바 바로가기
Tech Blog
블로그 내 검색
검색
Portfolio
관리
글쓰기
포트폴리오
로그인
로그아웃
메뉴
홈
Git
전체 글
166
로컬 LLM 서버 구축기 10편 — 멀티모달 LLM & vLLM 성능 최적화
10편: 멀티모달 LLM & vLLM 성능 최적화시리즈 목표: 로컬 LLM 스택을 단계별로 구축하며 포트폴리오 완성이번 편: 텍스트를 넘어 이미지·문서를 처리하는 멀티모달 LLM의 개념과 운용법, 그리고 프로덕션 수준의 추론 성능을 끌어내는 vLLM을 다룬다Part 1. 멀티모달 LLM멀티모달이란텍스트만 처리하던 LLM이 이미지·PDF·표·오디오 등 다양한 형식의 입력을 함께 처리할 수 있는 능력이다.텍스트 전용 LLM: "펌프 진동 그래프를 보고 이상 여부를 판단해줘" → ❌ 이미지 읽기 불가멀티모달 LLM (VLM): [그래프 이미지] + "이상 징후가 있나?" → ✅ 이미지 + 텍스트 동시 처리왜 중요한가: 실무 문서의 상당수는 순수 텍스트가 아니다.설비 매뉴얼 → 배선도, 부품 사진, 도면..
2026. 5. 13.
로컬 LLM 서버 구축기 9편 — RAG 최적화: 검색 품질을 끌어올리는 6가지 레이어
09편: RAG 최적화 — 검색 품질을 끌어올리는 6가지 레이어시리즈 목표: 로컬 LLM 스택을 단계별로 구축하며 포트폴리오 완성이번 편: 기본 RAG의 한계를 진단하고, Hybrid Search · Reranking · Semantic Chunking으로 정확도를 높인다왜 기본 RAG는 부족한가이전 편에서 구현한 RAG는 이런 흐름이었다:질문 → 임베딩 → Vector DB 검색 (Top-k) → LLM 컨텍스트 주입 → 답변단순하고 빠르지만, 실무에서 반드시 마주치는 한계가 있다.증상으로 진단하기:증상원인검색은 되는데 답변이 틀림청크가 너무 작아 맥락이 잘림"3호 펌프"를 물었는데 "2호 펌프" 답변Vector가 고유명사를 구분 못함관련 없는 문서가 Top-k에 포함similarity threshol..
2026. 5. 13.
로컬 LLM 서버 구축기 8편 — Fine-tuning with LoRA
로컬 LLM 서버 구축기 8편 — Fine-tuning with LoRA"모델이 우리 도메인 말투로 말하게 만들 수 없을까?" 이번 편에서는 LoRA로 Qwen2.5-7B를 fine-tuning하고 Ollama에 등록하는 전 과정을 다룹니다. 그리고 15개 데이터로 실패한 이유까지 솔직하게 정리합니다.Fine-tuning이 뭔가사전학습(Pre-training)된 모델을 특정 도메인/태스크에 맞게 추가 학습시키는 것입니다.qwen2.5:7b (기본) 인터넷 전체 텍스트로 학습됨 설비 점검 용어, 우리 회사 규칙은 모름 ↓ Fine-tuningqwen2.5:7b-maintenance (우리 모델) "3호 펌프 MTBF 기준값은 8,760시간" "점검 주기 초과 시 가동 중지 절차..
2026. 5. 13.
로컬 LLM 서버 구축기 7편 — Observability + RAGAS
로컬 LLM 서버 구축기 7편 — Observability + RAGAS에이전트가 "잘" 동작하는지 어떻게 알 수 있을까요? 이번 편에서는 에이전트의 모든 실행을 기록하고, LLM이 LLM을 채점하게 만듭니다.왜 관측 가능성이 필요한가5~6편까지 만든 시스템은 동작은 하지만 블랙박스입니다.에이전트가 어떤 도구를 몇 번 호출했는지 모른다응답 시간이 평균 몇 초인지 모른다답변 품질이 좋아지고 있는지 나빠지고 있는지 모른다한국어로 잘 대답하고 있는지 모른다에러가 나면 그제야 확인하는 방식은 실무에서 통하지 않습니다.측정하지 않으면 개선할 수 없습니다.Logging vs Monitoring vs Tracing실무에서 자주 혼용되는 세 개념을 구분해야 합니다.개념질문예시Logging무슨 일이 있었나?"사용자가 3..
2026. 5. 13.
로컬 LLM 서버 구축기 6편 — Streaming + Structured Output
로컬 LLM 서버 구축기 6편 — Streaming + Structured Output5편까지 완성한 시스템에 두 가지를 추가합니다. 실시간 응답(Streaming)과 에이전트 출력 구조화(Structured Output)입니다.왜 이 두 가지인가지금까지 만든 API는 두 가지 문제가 있습니다.문제 1 — 응답이 느리게 느껴진다LLM이 답변을 다 만들 때까지 아무것도 안 보입니다. 30초짜리 답변이면 30초 동안 빈 화면입니다.문제 2 — 에이전트 출력이 불안정하다run_agent()가 dict를 반환하는데, 어느 날 실수로 키 이름이 바뀌면 프론트엔드가 조용히 깨집니다.Part 1 — StreamingHTTP의 기본 구조HTTP는 원래 "요청 1번 → 응답 1번"입니다.클라이언트 서버 ..
2026. 5. 13.
로컬 LLM 서버 구축기 5편 — Harness Engineering & Defensive Engineering
로컬 LLM 서버 구축기 5편 — Harness Engineering & Defensive Engineering4편에서 에이전트를 구현했습니다. 이번 편에서는 에이전트가 실수를 반복하지 않도록 Harness Engineering과 Defensive Engineering을 적용합니다.왜 필요한가?에이전트는 본질적으로 예측 불가능합니다.같은 질문을 해도→ 어떤 때는 한국어로→ 어떤 때는 중국어로→ 어떤 때는 설비명을 혼동→ 어떤 때는 날짜를 추측실무에서는 틀린 답변이 단순한 불편함이 아닙니다.설비 점검일 오답 → 점검 누락 → 설비 고장 → 생산 중단베어링 기준값 오답 → 잘못된 판단 → 사고DB 잘못 건드림 → 데이터 손실 → 복구 불가신뢰할 수 없는 에이전트는 없는 것보다 위험합니다.두 가지 접근Defe..
2026. 5. 13.
로컬 LLM 서버 구축기 4편 — 에이전트(Agent) 구현
로컬 LLM 서버 구축기 4편 — 에이전트(Agent) 구현3편에서 RAG 파이프라인을 구축했습니다. 이번 편에서는 LLM이 스스로 도구를 선택하고 실행하는 에이전트를 구현합니다.에이전트란?지금까지 만든 RAG는 이렇습니다.사용자 질문 → 문서 검색 → LLM → 답변항상 문서 검색만 합니다. 수동적이에요.에이전트는 다릅니다.사용자 질문 → LLM이 스스로 판단 → 필요한 도구 선택 → 실행 → 답변"3호 펌프 마지막 점검일이 며칠 전이야?" 라는 질문을 받으면1. 점검일은 문서에 있겠다 → search_docs 호출2. 오늘 날짜는 모른다 → get_current_time 호출3. 날짜 차이 계산 → calculate 호출LLM이 스스로 판단해서 필요한 도구만 골라 씁니다.R..
2026. 5. 13.
로컬 LLM 서버 구축기 3편 — RAG 파이프라인 구현
로컬 LLM 서버 구축기 3편 — RAG 파이프라인 구현2편에서 FastAPI + Ollama 서버를 구축했습니다. 이번 편에서는 문서를 업로드하면 LLM이 해당 문서를 참고해서 답변하는 RAG 파이프라인을 구현합니다.RAG란?RAG(Retrieval-Augmented Generation) — LLM이 모르는 정보를 외부 문서에서 찾아서 답변하게 하는 기술[RAG 없이]사용자: "3호 펌프 베어링 결함 언제 발생했어?"LLM: "모릅니다" 또는 거짓말[RAG 있으면]사용자: "3호 펌프 베어링 결함 언제 발생했어?"서버: 유지보수 문서에서 관련 내용 찾아서 LLM에 전달LLM: "2024년 3월 15일에 발생했습니다"전체 구조[문서 저장 파이프라인]TXT/PDF 업로드 ↓텍스트 추출 ..
2026. 5. 13.
로컬 LLM 서버 구축기 2편 — FastAPI로 Ollama API 서버 만들기
로컬 LLM 서버 구축기 2편 — FastAPI로 Ollama API 서버 만들기1편에서 Ollama + Docker 환경을 구축했습니다. 이번 편에서는 FastAPI로 Ollama를 감싸는 API 서버를 만들어 실제 서비스 구조를 갖춥니다.왜 FastAPI로 감싸나?Ollama 자체도 REST API를 제공하므로 직접 호출할 수 있습니다. 그런데 실무에서는 부족합니다.[AS-IS] 클라이언트 → Ollama (11434포트) 직접 호출[TO-BE] 클라이언트 → FastAPI → Ollama기능설명인증API 키 없으면 못 쓰게 막기로깅누가 뭘 물어봤는지 기록RAG 연결질문이 들어오면 DB 검색 후 Ollama에 전달모델 교체클라이언트 코드 수정 없이 내부 모델 교체 가능에러 처리Ollama 오류를 깔끔..
2026. 5. 13.
로컬 LLM 서버 구축기 1편 — Docker + Ollama + GPU 환경 세팅
로컬 LLM 서버 구축기 1편 — Docker + Ollama + GPU 환경 세팅백엔드 개발자가 LLM 전문가가 되기 위해 직접 로컬 LLM 서버를 구축한 과정을 정리한 글입니다.왜 로컬 LLM 서버인가?ChatGPT나 Claude 같은 API를 쓰면 편하지만 기업 환경에서는 제약이 많습니다.민감한 데이터를 외부 API에 보낼 수 없음API 비용이 트래픽에 비례해서 증가인터넷 연결 없이도 동작해야 하는 경우이런 이유로 온프레미스(On-premise) 로컬 LLM 서버에 대한 수요가 늘고 있고,이를 구축할 수 있는 능력이 LLM 전문가에게 중요한 스킬이 됩니다.사용 환경항목내용서버Dell PowerEdge r760xsOSUbuntu 22.04GPUNVIDIA A2 × 2장VRAM15GB × 2 = 30G..
2026. 5. 13.
rsync + SSH + cron으로 서버 간 특정 폴더 자동 백업 구축
rsync란?rsync는 리눅스/유닉스에서 가장 많이 쓰이는 파일 동기화 도구입니다. 특징증분 전송: 변경된 파일만 전송 → 네트워크 절약권한/시간 유지: -a 옵션으로 원본 그대로 복사압축 전송: -z 옵션 → 속도 향상삭제 동기화: --delete 옵션으로 원본과 동일하게 유지SSH 연동 가능: 원격 서버에도 안전하게 전송백업 자동화: cron과 결합하면 주기적 백업 가능 1. 작업 배경 두 대의 Linux 서버가 있고,한 서버에 있는 특정 폴더만 다른 서버로 주기적으로 백업해야 하는 상황 요구사항 정리 전체 복사 X → 변경된 파일만 전송자동화 필요한글 폴더명 포함안정적이고 표준적인 방식 2. SSH 키 생성 (기존 키와 별개로 백업용 키 발급)기존 SSH 키를 덮어쓰지 않기 위해 백업 전용 키를..
2025. 12. 29.
KISA BPFDoor 악성코드 점검 가이드 배포 관련 대응
BPFDoor 악성코드: 점검 가이드와 대응 방법 최근 SKT에서 발생한 대규모 개인정보 유출로 인해 . 이번 사건은 악성코드, 특히 BPFDoor라는 악성코드가 연루된 것으로 의심되고 있어 이에 대한 대응이 필요합니다.한국인터넷진흥원(KISA)의 BPFDoor 악성코드 점검 가이드를 바탕으로, 이 악성코드의 특징과 시스템 점검 방법을 자세히 정리한 포스팅입니다.BPFDoor 악성코드란?BPFDoor는 Berkeley Packet Filter(BPF)를 악용해 시스템에 침투하는 정교한 악성코드입니다. 이 악성코드는 주로 리눅스 시스템을 타겟으로 하며, 네트워크 트래픽을 조작하거나 백도어 역할을 수행해 공격자가 시스템에 지속적으로 접근할 수 있도록 합니다. SKT와 같은 대규모 통신사나 기업 네트워크가 이..
2025. 5. 27.
이전
1
2
3
4
···
14
다음
반응형
티스토리툴바
Tech Blog
구독하기