- Guide to Dify, an open-source platform for developing large language model (LLM) applications | by Gen. Devin DL. | Medium
- Dify.AI – Medium
- Explore Dify: A Step-by-Step Guide to Building a Simple LLM-Powered Application | by Ken Maeda | Medium
- Getting Started with Dify: No-Code AI Application Development | by Research Graph | Medium
2025년 9월 16일 화요일
노코드 도구 Dify 사용기
2025년 9월 15일 월요일
노코드 도구 flowise 사용기
2025년 9월 10일 수요일
LLM 동작 메커니즘과 최신 기술 분석
최신 대규모 언어모델의 기술적 기법들은 크게 효율성과 성능 향상을 동시에 추구하는 방향으로 발전하고 있다. 우선 혼합 전문가 구조라 불리는 MoE 기법은 수많은 전문가 모듈 중 일부만 선택적으로 활성화하여 연산 효율을 극대화하는 방식이다. 게이트 네트워크가 입력 토큰의 은닉 상태를 보고 가장 적합한 전문가를 확률적으로 선택하고 선택된 전문가만 계산에 참여하기 때문에 전체 연산량은 줄어들면서도 특정 전문가가 특정 패턴에 특화되도록 학습된다. 이 과정에서 균형을 잡기 위해 부가적인 로드 밸런싱 손실이 함께 도입된다.
또한 파라미터 효율적 미세조정 기법들이 각광받고 있다. LoRA와 같은 방법은 거대한 모델의 전체 파라미터를 업데이트하지 않고 저차원 어댑터 행렬만 학습해도 충분히 성능을 낼 수 있도록 한다. 이 방식은 저장 공간과 학습 자원을 크게 줄이면서도 다양한 도메인에 빠르게 적응할 수 있다는 장점이 있다.
양자화와 프루닝 역시 중요하다. 양자화는 모델 파라미터를 16비트나 8비트 같은 저정밀도로 표현하여 메모리 사용량과 연산 속도를 개선한다. 프루닝은 중요도가 낮은 가중치를 제거함으로써 모델 크기를 줄이고 효율을 높인다. 이 두 기법은 실제 배포 환경에서의 속도와 비용 문제를 해결하는 핵심적 방법으로 활용된다.
메모리와 추론 속도를 개선하기 위한 기법으로는 효율적 어텐션 구조가 있다. 전통적인 어텐션은 시퀀스 길이에 따라 연산량이 제곱으로 늘어나는데 이를 완화하기 위해 플래시 어텐션과 같은 최적화 기법이 개발되었다. 이 방식은 GPU의 메모리 대역폭을 최대한 활용하면서도 연산을 줄여 긴 시퀀스 처리 능력을 크게 향상시킨다.
데이터 품질과 안전성을 강화하기 위한 학습 전략도 주목된다. 인간 피드백을 통한 강화학습 기법인 RLHF는 모델이 단순히 언어를 생성하는 수준을 넘어 사용자의 의도와 선호를 반영하도록 만든다. 최근에는 직접적인 강화학습 대신 선호 데이터만으로 지도학습을 수행하는 DPO와 같은 방식이 도입되어 학습의 안정성과 단순성이 개선되고 있다.
이와 함께 다중 모달 학습이 확대되고 있다. 텍스트뿐 아니라 이미지 음성 코드 등 다양한 데이터를 하나의 모델이 동시에 이해하고 생성할 수 있도록 설계하는 것이다. 이는 언어 중심에서 벗어나 실제 세계와 상호작용하는 범용 인공지능의 기반이 된다.
요약하면 최신 언어모델은 전문가를 선택적으로 활용하는 MoE 구조 파라미터 효율적 학습을 위한 LoRA 양자화와 프루닝 같은 최적화 메모리 효율적 어텐션 구조 인간 피드백 기반 학습 전략 그리고 다중 모달 통합 학습이라는 축 위에서 진화하고 있는 것이다.
- How to train a LLM from scratch. How to train a small LLM at home with… | by Sau Sheong | Medium
- Developing and training a small MoE LLM from scratch | Medium
- Building Large Language Model (LLM) from Scratch in just 160 lines of Code | by Mahadir Ahmad | Medium
- How to Build an LLM from Scratch | Towards Data Science
- Building a Large Language Model (LLM) from Scratch | by Abdul Rauf | Medium
- LLMs from Scratch Using Middle School Math | TDS Archive
- rasbt/LLMs-from-scratch: Implement a ChatGPT-like LLM in PyTorch from scratch, step by step
2025년 8월 22일 금요일
Text, wav 를 통한 입술 모양 이미지 생성 방법
- 얼굴 특징 감지 가이드 | Google AI Edge | Google AI for Developers
- Face-detection-mediapipe/Mediapipe-Face-Detector.ipynb at main · nikitansg/Face-detection-mediapipe
- LivePortrait: Bring portraits to life!
- SadTalker: [CVPR 2023] SadTalker:Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation
- Wav2Lip: This repository contains the codes of "A Lip Sync Expert Is All You Need for Speech to Lip Generation In the Wild", published at ACM Multimedia 2020. For HD commercial model, please try out Sync Labs
- piper: A fast, local neural text to speech system
- TMElyralab/MuseTalk: MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting
- dreamtalk: Official implementations for paper: DreamTalk: When Expressive Talking Head Generation Meets Diffusion Probabilistic Models
- audio2face-3d Model by NVIDIA | NVIDIA NIM
- EmoTalk_release: This is the official source for our ICCV 2023 paper "EmoTalk: Speech-Driven Emotional Disentanglement for 3D Face Animation"
2025년 8월 21일 목요일
Coding 기반 애니메이션 생성 방법
2025년 7월 8일 화요일
인공지능 멀티 에이전트 개발 방법 정리
- Multi-Agent Report Generation with AgentWorkflow - LlamaIndex
- MAS-GPT: Training LLMs To Build LLM-Based Multi-Agent Systems with paper
- 50배 더 빠른 로컬 LLM 추론을 위한 레시피 | AI & ML 월간
- LLM 에이전트의 이해: 개념, 패턴 및 프레임워크
- 다중 에이전트 AI 애플리케이션을 구축하기 위한 최고의 5가지 프레임워크
- LangGraph 기반 에이전트 시스템
- LLM 기반 다중 에이전트 시스템의 품질 보증 테스트 방법론
- 2024년 다중 에이전트 LLM | SuperAnnotate
- AWS에서 다중 에이전트 시스템을 구축하는 세 가지 방법 - DEV Community
2025년 7월 7일 월요일
확실하게 성공하는 바이브 코딩 도구 사용 방법
- ChatGPT 에 코딩 요청을 해서 생성된 파이썬 같은 코드를 복사&붙여넣기해 프로그램을 완성해 나가는 방법
- Gemini CLI, Claude code CLI, codex CLI 도구를 사용해 프로젝트 파일 및 소스코드를 생성하는 방법
- vscode 같은 개발 IDE와 연동되는 github copilot, cursor, windsurf와 같은 도구를 사용해 바이브 코딩하는 방법
- Bubble.io나 Canva와 같은 바이브 코딩 웹서비스에서 직접 요구사항을 입력하여 제공 클라우드에 앱을 생성 빌드 실행하는 방법
- Gemini Pro 가입
- 파이썬, node.js 설치
- Github 가입
- Copilot 서비스 가입
- vscode 설치 및 코딩 언어 관련 확장(Extension) 애드인 설치
GUI 기반 텍스트 편집기를 개발할꺼야. 파이썬과 Tkinter 라이브러리를 이용할꺼야. 메뉴는 파일 메뉴, 편집 메뉴, 테마 선택 메뉴(다크모드 하위 메뉴 포함), 찾기 메뉴로 구성됨. 이 프로그램 개발을 위한 PRD를 UI 스케치를 포함해 md 포맷으로 작성해.
2025년 6월 28일 토요일
바이브 코딩을 위한 구글 Gemini CLI 도구 분석 및 사용
- google-gemini/gemini-cli: An open-source AI agent that brings the power of Gemini directly into your terminal
- Comprehensive Guide to Setting Up Claude Code on Windows Using WSL | by azhar | azhar labs | Medium
- 구글 제미나이 CLI
- Gemini CLI Tutorial Series — Part 4 : Built-in Tools | by Romin Irani | Google Cloud - Community | Jul, 2025 | Medium
2025년 6월 16일 월요일
CoT(Chain-of-Thought) 학습 데이터 생성 및 모델 개발 방법
이 글은 Chain-of-Thought (CoT) 학습 데이터 생성 및 모델 개발 방법을 간략히 정리한다.
CoT와 관련해, 논리적 추론, 계획 수립, 지시 따르기 능력을 가르치는 데 효과적인 양질의 데이터셋은 여러 가지가 있다. 이런 데이터셋으로 학습하면 유사한 유스케이스에 대한 문제 해결 능력이 향상될 수 있다.
-
종합 추론 및 지시 따르기 데이터셋 (가장 유사한 케이스)
- Open-Orca: GPT-4와 같은 고성능 모델의 CoT 추론 과정을 포함한 약 100만 개의 데이터셋이다. 복잡한 질문에 대한 단계별 설명, 계획 수립 등 다양한 작업이 포함되어 있어 창의적 문제 해결 능력 학습에 매우 효과적이다.
- Dolly-15k: 질의응답, 요약, 창의적 글쓰기 등 15,000개의 고품질 프롬프트와 응답으로 구성되어 있다. 응답에 추론 과정이 명시적으로 포함된 경우가 많아 CoT 학습에 유용하다.
-
수학 및 과학 추론 데이터셋 (고전적인 CoT)
- GSM8K: 초등학교 수준의 수학 응용 문제에 대한 단계별 풀이 과정을 제공하는 대표적인 CoT 데이터셋이다. 논리적이고 순차적인 사고 능력을 가르치는 데 가장 좋은 데이터셋 중 하나이다.
- AQuA-RAT: 다양한 선택지 형식의 수학 문제에 대해 풀이 과정(Rationale)을 함께 제공한다.
학습 방법과 전략
가장 중요한 점: Ollama는 모델을 실행(Inference)하고 관리하는 도구이지, 모델을 훈련(Training)하는 도구가 아니다. 따라서 모델을 파인튜닝하는 작업은 다른 도구를 사용해 진행하고, 그 결과물을 Ollama로 가져와 사용하는 흐름으로 진행되어야 한다.
1. 데이터셋 형식 변환 (Instruction Tuning Format)
CoT 데이터셋을 모델 학습에 사용하려면 '지시(Instruction) 튜닝' 형식으로 변환해야 한다. 일반적으로 다음과 같은 JSONL 형식을 사용한다.
{
"instruction": "현재 장마철인 것을 고려해서 일본 3일 여행 일정을 짜줘.",
"input": "",
"output": "[1단계: 요구사항 명확화...] [2단계: 기본 전략 수립...] ... [5단계: 최종 계획안 요약]"
}
instruction
: 사용자 질문output
: 모델이 따라 배워야 할 이상적인 단계별 추론 과정 (CoT) 및 최종 답변
2. 학습 전략
- LoRA (Low-Rank Adaptation) 사용: 모델의 모든 가중치를 수정하는 '풀 파인튜닝'은 막대한 컴퓨팅 자원을 필요로 한다. 대신 LoRA는 원본 모델은 그대로 두고, 소규모의 '어댑터' 레이어만 추가하여 학습하는 파라미터 효율적 파인튜닝(PEFT) 방식이다. 적은 자원으로도 매우 효과적인 튜닝이 가능하여 개인이나 소규모 팀에게 가장 현실적인 방법이다.
- 품질 우선: 수백만 개의 저품질 데이터보다, 잘 정제된 수천~수만 개의 고품질 CoT 데이터가 모델 학습에 훨씬 효과적이다.
- 베이스 모델 선택: 파인튜닝의 기반이 될 좋은 성능의 오픈소스 모델을 선택하는 것이 중요하다. (예: Llama 3, Mistral, Gemma 등)
실행 방법
다음은 LoRA를 사용해 오픈소스 LLM을 CoT 데이터셋으로 파인튜닝하고 Ollama에서 실행하는 전체 과정이다.
1단계: 개발 환경 설정
Python, PyTorch, 그리고 Hugging Face의 주요 라이브러리를 설치한다.
pip install torch transformers datasets peft bitsandbytes accelerate
2단계: 데이터셋 준비
Hugging Face datasets
라이브러리로 CoT 데이터셋을 로드하고, 위에서 설명한 Instruction 형식으로 변환하는 전처리 스크립트를 작성해야 한다.
3단계: 모델 및 토크나이저 로드
파인튜닝할 베이스 모델과 토크나이저를 로드한다. (예: meta-llama/Meta-Llama-3-8B-Instruct
)
4단계: LoRA 설정 및 모델 튜닝
Hugging Face transformers
의 SFTTrainer
와 peft
라이브러리를 사용해 LoRA 파인튜닝을 진행한다.
# (개념적인 코드 예시)
from peft import LoraConfig
from transformers import TrainingArguments, SFTTrainer
# LoRA 설정
lora_config = LoraConfig(
r=16, # Rank
lora_alpha=32,
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
# 훈련 인자 설정
training_args = TrainingArguments(
output_dir="./lora-finetuned-model",
per_device_train_batch_size=4,
num_train_epochs=1,
learning_rate=2e-4,
logging_steps=10,
)
# SFTTrainer로 튜닝 시작
trainer = SFTTrainer(
model=base_model,
tokenizer=tokenizer,
train_dataset=formatted_dataset,
peft_config=lora_config,
args=training_args,
# ... 기타 설정
)
trainer.train()
5단계: 모델 병합 및 저장
LoRA 튜닝이 끝나면, 학습된 어댑터 가중치를 원본 베이스 모델과 병합하여 새로운 독립 모델로 저장한다.
6단계: Ollama로 모델 가져오기 및 실행
-
Modelfile 생성: 저장된 파인튜닝 모델 폴더를 기반으로
Modelfile
을 작성한다.코드 스니펫# 이 파일의 이름은 Modelfile이다. FROM ./path/to/your/merged-model-folder TEMPLATE """ <|begin_of_text|><|start_header_id|>user<|end_header_id|> {{ .Prompt }}<|eot_id|><|start_header_id|>assistant<|end_header_id|> """ # 베이스 모델에 맞는 프롬프트 템플릿을 지정한다.
-
Ollama 모델 생성: 터미널에서
ollama create
명령어로 나만의 모델을 생성한다.Bashollama create my-travel-planner -f ./Modelfile
-
Ollama 모델 실행: 생성된 커스텀 모델을 실행하여 결과를 확인한다.
Bashollama run my-travel-planner "현재 장마철인 것을 고려해서 일본 3일 여행 일정을 짜줘"
이 과정을 통해, 공개된 CoT 데이터셋으로 특정 문제 해결 능력이 강화된 나만의 LLM을 만들어 Ollama에서 손쉽게 활용하는 것이 가능하다.
참고: 에이전트 개발 시 ToT와 RAP 기법 비교
ToT는 이론적으로 모든 경로를 탐색하면 CoT에 비해 훨씬 더 많은 계산량과 시간이 필요하다는 단점이 있다. 나무의 가지(branch)가 깊어질수록 탐색해야 할 경우의 수가 기하급수적으로 늘어나기 때문이다. 하지만 실제 ToT 구현에서는 이 문제를 해결하기 위해 탐색을 제한하고 가지치기(Pruning)하는 여러 전략을 사용한다.
- 탐색 깊이 및 너비 제한: 무한정 탐색하는 것이 아니라, 최대 깊이(e.g., 5단계)와 각 단계에서 생성할 생각의 개수(너비, e.g., 3개)를 미리 정해둔다.
- 휴리스틱 평가 및 프루닝 (Heuristic Pruning): ToT의 핵심은 유망하지 않은 경로는 조기에 버리는 것이다. 각 생각을 생성한 후, 평가 함수를 통해 이 경로가 최종 정답으로 이어질 가능성을 점수화한다. 점수가 낮은 경로는 더 이상 탐색하지 않고 '가지치기'하여 계산 낭비를 막는다.
- 빔 서치 (Beam Search): 모든 유망한 경로를 유지하는 대신, 각 단계에서 가장 점수가 높은 상위 K개의 경로(생각의 빔)만 유지하고 나머지는 버린다. 이는 계산 비용을 통제하면서도 최적의 해를 찾을 확률을 높이는 효과적인 방법이다.
2. RAP(Reasoning and Acting)와 기존 기술의 융합
'기존 에이전트의 Function Calling'과 'CoT의 명시적 추론 과정'을 매우 효과적으로 융합한 형태이다.
-
기존 Function Calling: LLM이 사용자의 질문을 보고, 어떤 함수를 호출해야 할지 바로 결정하여 출력하는 방식이다.
(입력 -> 함수 호출)
과정에서 왜(Why) 그 함수를 호출했는지에 대한 설명이 부족한 경우가 많다. -
RAP의 차별점: RAP는 이 과정 사이에 CoT를 집어넣는다.
- (입력) -> [추론(Reasoning)] -> (함수 호출)
추론
단계에서 LLM은 "현재 상황이 이러하니, 목표를 달성하기 위해 다음 단계로 A 함수를 호출하는 것이 타당하다" 와 같은 **내부 독백(Internal Monologue)**을 CoT 형태로 명시적으로 생성한다.- 이 추론의 결과로
행동(Acting)
, 즉 Function Call이 결정된다.
이러한 융합이 가져오는 장점은 명확하다.
- 투명성 및 디버깅 용이성: 에이전트가 왜 그런 행동을 했는지 추론 과정을 통해 명확히 알 수 있다. 만약 잘못된 함수를 호출했다면, 어떤 논리적 오류 때문에 그런 결정을 했는지 파악하고 수정하기가 쉽다.
- 견고성 (Robustness): 함수 호출이 실패하거나 예상치 못한 결과를 반환했을 때, 에이전트는 그 실패를 '관찰(Observation)'하고, "A 함수가 실패했으니, 대안으로 B 함수를 시도해야겠다" 와 같이 다음 행동을 다시 '추론'할 수 있다. 스스로 오류를 복구하는 능력이 생긴다.
기법 | 핵심 아이디어 | 장점 | 단점 |
ToT | 문제 해결을 위한 여러 경로(생각)를 동시에 탐색하고 평가하여 최적의 경로를 찾는다. | 복잡하고 정답이 여러 개인 문제에 대해 더 높은 품질의 해결책을 찾을 수 있다. | CoT보다 계산 비용이 높다. 효율적인 평가 및 가지치기 전략이 필수적이다. |
RAP | '추론 -> 행동(도구 사용) -> 관찰'의 순환 루프를 통해 외부 세계와 상호작용한다. | 외부 도구/API를 활용할 수 있으며, 행동의 이유가 명확하고 오류에 강건하다. | 외부 도구/API를 잘 설계해야 하며, 상태 관리 및 루프 제어가 복잡해질 수 있다. |