🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

A

AI Generated

2025. 11. 29. · 42 Views

nanochat 커스터마이징과 기여 완벽 가이드

nanochat 프로젝트를 자신만의 스타일로 커스터마이징하고 오픈소스에 기여하는 방법을 배웁니다. Identity 주입부터 PR 작성까지, 실무에서 바로 활용할 수 있는 내용을 담았습니다.


목차

  1. Identity_주입하기
  2. 새로운_능력_추가하기
  3. Full-text search 도입을 고려해보세요<|im_end|>
  4. depth_조절로_모델_크기_변경
  5. CPU_MPS에서_실행하기
  6. PR_작성_가이드
  7. LLM101n_코스_소개

1. Identity 주입하기

김개발 씨는 최근 나만의 AI 챗봇을 만들어보고 싶다는 생각을 했습니다. 단순히 일반적인 답변을 하는 것이 아니라, 마치 특정 캐릭터처럼 대화하는 챗봇을 원했습니다.

그런데 어떻게 해야 모델에게 특별한 정체성을 부여할 수 있을까요?

Identity 주입이란 모델이 특정 페르소나나 역할을 가지고 대화하도록 학습시키는 것입니다. 마치 배우가 대본을 외우고 캐릭터에 몰입하는 것처럼, 모델도 Synthetic Data를 통해 새로운 정체성을 학습합니다.

이를 통해 여러분만의 독특한 챗봇을 만들 수 있습니다.

다음 코드를 살펴봅시다.

# data/identity.txt - Identity 데이터 정의
# 각 대화는 <|im_start|>와 <|im_end|>로 감쌉니다
<|im_start|>user
너는 누구야?<|im_end|>
<|im_start|>assistant
안녕하세요! 저는 코딩을 도와주는 친절한 도우미입니다.
무엇이든 물어보세요!<|im_end|>
<|im_start|>user
뭘 잘해?<|im_end|>
<|im_start|>assistant
파이썬 코드 작성과 버그 수정을 잘합니다.
특히 초보자 분들께 쉽게 설명해드려요!<|im_end|>

김개발 씨는 회사에서 고객 상담 챗봇 프로젝트를 맡게 되었습니다. 기존 LLM을 그대로 사용하니 너무 딱딱하고 일반적인 답변만 나왔습니다.

고객들이 원하는 것은 마치 진짜 상담원과 대화하는 듯한 자연스러운 경험이었습니다. 선배 개발자 박시니어 씨가 조언을 해주었습니다.

"nanochat에서는 Identity 주입이라는 방법을 쓸 수 있어요. 모델에게 특별한 정체성을 심어주는 거죠." 그렇다면 Identity 주입이란 정확히 무엇일까요?

쉽게 비유하자면, 이것은 마치 신입 직원에게 회사의 응대 매뉴얼을 교육하는 것과 같습니다. 처음 입사한 직원은 어떻게 고객을 맞이해야 하는지 모릅니다.

하지만 매뉴얼을 숙지하고 롤플레이를 반복하면, 어느새 회사의 톤앤매너를 자연스럽게 익히게 됩니다. 모델도 마찬가지입니다.

Synthetic Data란 이러한 교육 자료를 의미합니다. 우리가 원하는 방식으로 대화하는 예시 데이터를 직접 만들어 모델에게 학습시키는 것입니다.

이 데이터는 실제 대화가 아니라 우리가 합성한 것이기 때문에 Synthetic이라고 부릅니다. nanochat에서는 data/identity.txt 파일에 이러한 합성 데이터를 작성합니다.

파일 형식은 특별한 토큰들로 구성됩니다. **<|im_start|>**는 메시지의 시작을, **<|im_end|>**는 메시지의 끝을 나타냅니다.

user와 assistant 역할을 번갈아 작성하면 됩니다. 위의 코드 예시를 살펴보겠습니다.

첫 번째 대화에서 사용자가 "너는 누구야?"라고 물으면, 어시스턴트가 친절한 도우미라고 자신을 소개합니다. 이런 대화 쌍을 여러 개 만들면 모델이 해당 페르소나를 학습하게 됩니다.

실제 현업에서는 어떻게 활용할까요? 예를 들어 게임 회사에서 NPC 대화 AI를 만든다고 가정해봅시다.

용감한 기사 캐릭터라면 "저는 왕국을 수호하는 기사입니다!"와 같은 정체성 데이터를 넣을 수 있습니다. 금융 회사라면 신뢰감 있고 전문적인 톤의 데이터를 준비하면 됩니다.

주의할 점도 있습니다. Identity 데이터가 너무 적으면 효과가 미미하고, 너무 많으면 다른 능력이 희석될 수 있습니다.

일반적으로 50개에서 200개 정도의 대화 쌍이 적당합니다. 다시 김개발 씨의 이야기로 돌아가 봅시다.

그는 고객 상담에 맞는 친절하고 전문적인 Identity 데이터를 200개 정도 작성했습니다. 학습 후 챗봇은 마치 진짜 상담원처럼 자연스럽게 응대하기 시작했습니다.

실전 팁

💡 - Identity 데이터는 최소 50개 이상 준비하되, 다양한 상황을 커버하도록 작성하세요

  • 일관된 톤앤매너를 유지하는 것이 중요합니다

2. 새로운 능력 추가하기

박시니어 씨는 팀에서 사용하는 챗봇에 코드 리뷰 기능을 추가하고 싶었습니다. 기본 모델은 일반적인 대화는 잘 하지만, 특정 도메인의 전문 지식이 부족했습니다.

어떻게 하면 모델에게 새로운 능력을 가르칠 수 있을까요?

새로운 능력 추가는 Identity 주입과 같은 원리로 동작합니다. 차이점은 정체성이 아닌 특정 태스크 수행 능력을 학습시킨다는 것입니다.

코드 리뷰, 번역, 요약 등 원하는 능력에 맞는 예시 데이터를 준비하면 모델이 해당 작업을 학습합니다.

다음 코드를 살펴봅시다.

# data/abilities.txt - 코드 리뷰 능력 추가 예시
<|im_start|>user
다음 코드를 리뷰해줘:
def add(a, b):
    return a + b<|im_end|>
<|im_start|>assistant
코드 리뷰 결과입니다:

3. Full-text search 도입을 고려해보세요< im end >

박시니어 씨는 10년 차 시니어 개발자입니다. 그는 매일 후배들의 코드를 리뷰하는데 상당한 시간을 쓰고 있었습니다.

만약 기본적인 리뷰를 자동화할 수 있다면 얼마나 좋을까요? 팀에서 사용하던 nanochat 모델은 일반적인 질문에는 잘 대답했지만, 코드 리뷰라는 특수한 작업에는 서툴렀습니다.

박시니어 씨는 이 모델에게 코드 리뷰 능력을 가르치기로 결심했습니다. 새로운 능력을 추가하는 것은 마치 견습생에게 특정 기술을 전수하는 것과 같습니다.

숙련된 장인이 견습생에게 망치질하는 방법을 보여주고, 직접 해보게 하고, 피드백을 주는 과정을 반복합니다. 결국 견습생도 장인처럼 망치질할 수 있게 됩니다.

모델 학습도 똑같습니다. 우리가 원하는 작업의 입력과 출력 쌍을 여러 개 보여주면, 모델은 그 패턴을 학습합니다.

코드가 들어오면 리뷰 결과를 출력하는 패턴, 영어 문장이 들어오면 한국어 번역을 출력하는 패턴 등을 익히게 됩니다. 위의 코드 예시에서는 두 가지 능력을 가르치고 있습니다.

첫 번째는 파이썬 함수 리뷰, 두 번째는 SQL 쿼리 최적화 조언입니다. 각각의 예시에서 입력 형식과 출력 형식이 일관되게 유지되는 것을 볼 수 있습니다.

데이터를 작성할 때 중요한 점은 일관성입니다. 코드 리뷰 결과를 항상 번호 목록으로 작성한다든지, 항상 긍정적인 피드백으로 마무리한다든지 하는 식으로 패턴을 유지해야 합니다.

그래야 모델이 혼란 없이 학습할 수 있습니다. 실무에서 이 기술은 매우 유용합니다.

법률 회사에서는 계약서 검토 능력을, 의료 분야에서는 증상 분석 능력을, 교육 분야에서는 문제 풀이 설명 능력을 추가할 수 있습니다. 하지만 주의할 점이 있습니다.

새로운 능력을 추가할 때 기존 능력이 약해지는 망각 현상이 발생할 수 있습니다. 이를 방지하려면 기존 능력에 대한 데이터도 함께 섞어서 학습시켜야 합니다.

박시니어 씨는 코드 리뷰 예시 100개, 일반 대화 예시 100개를 섞어서 학습시켰습니다. 결과적으로 코드 리뷰도 잘 하면서 일반 대화 능력도 유지하는 균형 잡힌 모델을 얻을 수 있었습니다.

실전 팁

💡 - 새 능력 데이터와 기존 능력 데이터를 1:1 비율로 섞어서 학습시키세요

  • 출력 형식의 일관성을 유지하면 모델이 더 잘 학습합니다

3. depth 조절로 모델 크기 변경

신입 개발자 이초보 씨는 개인 프로젝트로 나만의 챗봇을 만들고 싶었습니다. 그런데 문제가 있었습니다.

집에 있는 컴퓨터로는 큰 모델을 돌릴 수 없었습니다. 모델 크기를 조절할 수 있는 방법은 없을까요?

depth는 Transformer 모델의 레이어 수를 의미합니다. 레이어가 많을수록 모델이 복잡한 패턴을 학습할 수 있지만, 그만큼 더 많은 메모리와 연산이 필요합니다.

nanochat에서는 depth 값을 조절하여 자신의 환경에 맞는 모델 크기를 선택할 수 있습니다.

다음 코드를 살펴봅시다.

# train_nanochat.py에서 모델 설정 부분
from model import NanochatConfig, Nanochat

# 작은 모델 (개인 PC용) - 약 45M 파라미터
small_config = NanochatConfig(
    vocab_size=32000,
    dim=512,          # 임베딩 차원
    n_heads=8,        # 어텐션 헤드 수
    depth=6,          # 레이어 수 (핵심!)
    max_seq_len=1024
)

# 큰 모델 (서버용) - 약 350M 파라미터
large_config = NanochatConfig(
    vocab_size=32000,
    dim=1024,
    n_heads=16,
    depth=24,         # 레이어 4배 증가
    max_seq_len=2048
)

model = Nanochat(small_config)  # 원하는 설정 선택

이초보 씨는 대학생입니다. 기숙사에 있는 노트북은 GPU도 없고 메모리도 8GB밖에 되지 않습니다.

하지만 LLM을 직접 학습시켜보고 싶은 열망이 있었습니다. 인터넷에서 찾아본 대부분의 LLM 프로젝트는 고사양 GPU를 요구했습니다.

낙담하던 차에 nanochat을 발견했습니다. 이 프로젝트는 depth 조절을 통해 모델 크기를 유연하게 바꿀 수 있었습니다.

depth란 무엇일까요? 이것은 마치 건물의 층수와 같습니다.

2층짜리 건물과 100층짜리 건물은 수용할 수 있는 사람의 수가 다릅니다. 마찬가지로 depth가 6인 모델과 24인 모델은 처리할 수 있는 정보의 복잡도가 다릅니다.

Transformer 모델에서 각 레이어는 입력 데이터를 점점 더 추상적인 형태로 변환합니다. 첫 번째 레이어는 단어의 기본적인 의미를, 중간 레이어들은 문맥과 관계를, 마지막 레이어들은 복잡한 추론을 담당합니다.

레이어가 많을수록 이 과정이 정교해집니다. 하지만 레이어가 많아지면 대가도 따릅니다.

메모리 사용량이 늘어나고, 학습 시간도 길어지며, 추론 속도도 느려집니다. 따라서 자신의 환경과 목적에 맞는 적절한 depth를 선택해야 합니다.

위의 코드에서 small_config는 depth가 6입니다. 이 정도면 노트북에서도 학습할 수 있는 약 4500만 개의 파라미터를 가진 모델이 됩니다.

반면 large_config는 depth가 24로, 약 3억 5천만 개의 파라미터를 가지며 서버급 하드웨어가 필요합니다. dim과 n_heads도 함께 조절하면 더 세밀한 크기 조정이 가능합니다.

dim은 각 레이어에서 처리하는 벡터의 크기이고, n_heads는 멀티헤드 어텐션에서 사용하는 헤드의 개수입니다. 이 세 가지 값의 조합으로 다양한 크기의 모델을 만들 수 있습니다.

이초보 씨는 depth=4, dim=256으로 설정하여 아주 작은 모델을 만들었습니다. 성능은 제한적이었지만, 노트북에서도 학습이 가능했습니다.

LLM의 동작 원리를 직접 체험하며 배울 수 있는 소중한 경험이었습니다. 실무에서는 프로토타입은 작은 모델로 빠르게 실험하고, 본격적인 서비스에는 큰 모델을 사용하는 전략을 많이 씁니다.

depth 조절은 이러한 유연한 개발을 가능하게 합니다.

실전 팁

💡 - 처음에는 작은 depth로 시작하여 코드가 잘 동작하는지 확인한 후, 점차 늘려가세요

  • depth를 2배로 늘리면 학습 시간과 메모리도 대략 2배가 됩니다

4. CPU MPS에서 실행하기

맥북을 사용하는 최맥씨는 NVIDIA GPU가 없어서 CUDA를 사용할 수 없었습니다. 하지만 M1 칩의 GPU를 활용할 수 있다는 이야기를 들었습니다.

그리고 김개발 씨는 GPU 없이 CPU만으로도 작은 모델을 돌려보고 싶었습니다. 어떻게 해야 할까요?

PyTorch는 CUDA 외에도 CPUMPS(Metal Performance Shaders)를 지원합니다. MPS는 Apple Silicon의 GPU를 활용하는 기술입니다.

nanochat에서는 간단한 설정 변경으로 다양한 하드웨어에서 실행할 수 있습니다.

다음 코드를 살펴봅시다.

# device 설정 - 환경에 맞게 선택
import torch

# 방법 1: 자동 감지
def get_device():
    if torch.cuda.is_available():
        return torch.device('cuda')
    elif torch.backends.mps.is_available():
        return torch.device('mps')  # Apple Silicon
    else:
        return torch.device('cpu')

device = get_device()
print(f"Using device: {device}")

# 방법 2: 명시적 지정
device = torch.device('cpu')      # CPU 강제 사용
# device = torch.device('mps')    # MPS 강제 사용

# 모델과 데이터를 device로 이동
model = model.to(device)
input_ids = input_ids.to(device)

최맥씨는 열정적인 iOS 개발자입니다. 최근 LLM에 관심이 생겨 직접 학습을 시도해보려 했습니다.

그런데 대부분의 튜토리얼이 NVIDIA GPU와 CUDA를 전제로 하고 있었습니다. 맥북 프로에는 M2 Pro 칩이 탑재되어 있었습니다.

분명 성능 좋은 GPU가 내장되어 있는데, 이걸 활용할 방법은 없을까요? 바로 MPS가 그 해답이었습니다.

MPS는 Metal Performance Shaders의 약자로, Apple이 만든 GPU 컴퓨팅 프레임워크입니다. PyTorch 1.12 버전부터 MPS 백엔드를 공식 지원하기 시작했습니다.

덕분에 Apple Silicon 사용자도 GPU 가속의 혜택을 누릴 수 있게 되었습니다. 위의 코드에서 get_device 함수는 현재 시스템에서 사용 가능한 최적의 디바이스를 자동으로 선택합니다.

CUDA가 있으면 CUDA를, 없으면 MPS를, 그것도 없으면 CPU를 사용합니다. 이렇게 하면 코드 수정 없이 다양한 환경에서 실행할 수 있습니다.

CPU로 실행하는 것도 충분히 의미가 있습니다. 물론 GPU보다 느리지만, 작은 모델이라면 충분히 실용적입니다.

특히 추론 시에는 학습보다 연산량이 적어서 CPU만으로도 괜찮은 속도가 나옵니다. MPS 사용 시 주의할 점이 있습니다.

모든 PyTorch 연산이 MPS에서 지원되는 것은 아닙니다. 일부 연산은 자동으로 CPU로 폴백되어 실행됩니다.

또한 메모리 관리 방식이 CUDA와 달라서 가끔 예상치 못한 오류가 발생할 수 있습니다. 김개발 씨는 회사에서 NVIDIA GPU 서버를 사용하고, 집에서는 CPU로 가벼운 실험을 합니다.

같은 코드가 두 환경에서 모두 동작하니 매우 편리합니다. 코드를 이식할 때 디바이스 설정만 신경 쓰면 됩니다.

최맥씨는 MPS를 활용해 맥북에서 nanochat을 학습시켰습니다. NVIDIA GPU만큼 빠르지는 않았지만, CPU보다는 3-4배 빨랐습니다.

무엇보다 별도의 외장 GPU 없이 노트북 하나로 모든 것을 할 수 있다는 점이 매력적이었습니다.

실전 팁

💡 - MPS 사용 시 torch.mps.empty_cache()로 메모리를 정리하면 안정성이 높아집니다

  • CPU 학습 시 num_workers를 적절히 설정하면 데이터 로딩 병목을 줄일 수 있습니다

5. PR 작성 가이드

김개발 씨는 nanochat에 유용한 기능을 추가했습니다. 이것을 다른 사람들도 사용할 수 있도록 공유하고 싶었습니다.

오픈소스에 기여하는 방법, 바로 Pull Request를 작성하는 것입니다. 하지만 처음이라 어떻게 해야 할지 막막했습니다.

**Pull Request(PR)**는 자신이 수정한 코드를 원본 프로젝트에 반영해달라고 요청하는 것입니다. 좋은 PR은 명확한 설명, 깔끔한 코드, 그리고 충분한 테스트를 포함합니다.

nanochat 프로젝트에 기여하는 구체적인 단계를 알아봅시다.

다음 코드를 살펴봅시다.

# 1. 먼저 저장소를 Fork하고 Clone
git clone https://github.com/YOUR_USERNAME/nanochat.git
cd nanochat

# 2. 새로운 브랜치 생성 (기능 설명하는 이름으로)
git checkout -b feature/add-temperature-sampling

# 3. 코드 수정 후 커밋 (커밋 메시지는 명확하게)
git add .
git commit -m "feat: add temperature parameter for sampling"

# 4. Fork한 저장소에 Push
git push origin feature/add-temperature-sampling

# 5. GitHub에서 PR 생성
# - 제목: [Feature] Add temperature parameter for sampling
# - 본문: 변경 이유, 수정 내용, 테스트 방법 설명

김개발 씨는 nanochat을 사용하면서 한 가지 아쉬운 점을 발견했습니다. 텍스트 생성 시 temperature 파라미터가 없어서 출력의 다양성을 조절할 수 없었습니다.

직접 이 기능을 추가하기로 했습니다. 먼저 GitHub에서 nanochat 저장소를 Fork했습니다.

Fork는 원본 저장소의 복사본을 자신의 계정에 만드는 것입니다. 마치 도서관에서 책을 빌려와 집에서 메모하는 것과 같습니다.

원본은 그대로 두고 자신의 복사본에서 마음껏 수정할 수 있습니다. Clone한 후에는 새로운 브랜치를 만들었습니다.

브랜치 이름은 feature/add-temperature-sampling처럼 변경 내용을 설명하는 것이 좋습니다. 이렇게 하면 나중에 어떤 작업을 했는지 한눈에 알 수 있습니다.

코드를 수정하고 커밋할 때는 메시지가 중요합니다. "fix bug"나 "update code" 같은 모호한 메시지는 피해야 합니다.

대신 "feat: add temperature parameter for sampling"처럼 무엇을 왜 변경했는지 명확하게 작성합니다. PR을 생성할 때는 제목본문을 신경 써서 작성해야 합니다.

제목은 변경 사항을 한 줄로 요약하고, 본문에는 왜 이 변경이 필요한지, 어떻게 구현했는지, 어떻게 테스트할 수 있는지를 설명합니다. 좋은 PR의 특징이 있습니다.

첫째, 작은 단위로 쪼개져 있어야 합니다. 한 번에 1000줄을 바꾸는 것보다 100줄씩 10번 나눠서 보내는 것이 리뷰하기 쉽습니다.

둘째, 테스트가 포함되어야 합니다. 새 기능이 제대로 동작하는지 확인할 수 있는 테스트 코드를 함께 제출합니다.

박시니어 씨는 김개발 씨의 PR을 리뷰하며 몇 가지 피드백을 주었습니다. "여기 변수명이 좀 모호해요.

그리고 엣지 케이스 처리가 빠진 것 같네요." 김개발 씨는 피드백을 반영하여 코드를 수정하고 다시 Push했습니다. 며칠 후, 드디어 PR이 merge되었습니다.

김개발 씨가 추가한 기능이 공식 nanochat 프로젝트에 포함된 것입니다. 전 세계 개발자들이 이 기능을 사용할 수 있게 되었습니다.

오픈소스 기여는 단순히 코드를 보내는 것 이상의 의미가 있습니다. 다른 개발자들과 협업하고, 코드 리뷰를 받으며, 실력을 키울 수 있는 좋은 기회입니다.

실전 팁

💡 - PR을 보내기 전에 프로젝트의 CONTRIBUTING.md 파일을 꼭 읽어보세요

  • 작은 버그 수정이나 문서 개선부터 시작하면 진입 장벽이 낮아집니다

6. LLM101n 코스 소개

이초보 씨는 nanochat을 만지작거리면서 LLM에 대해 더 깊이 공부하고 싶어졌습니다. 그러던 중 Andrej Karpathy가 진행하는 LLM101n이라는 코스를 발견했습니다.

무료로 제공되는 이 코스는 LLM의 기초부터 시작해 실제 구현까지 다룬다고 합니다.

LLM101n은 Andrej Karpathy가 만든 LLM 입문 코스입니다. 이 코스의 특별한 점은 nanochat 같은 작은 모델을 직접 구현하며 배운다는 것입니다.

이론만 배우는 것이 아니라 손으로 코드를 작성하며 동작 원리를 체득할 수 있습니다.

다음 코드를 살펴봅시다.

# LLM101n 코스 커리큘럼 개요
course_structure = {
    "Chapter 1": "Bigram Language Model - 가장 간단한 언어 모델",
    "Chapter 2": "Micrograd - 자동 미분 직접 구현",
    "Chapter 3": "N-gram Models - 통계적 언어 모델",
    "Chapter 4": "Attention - 트랜스포머의 핵심",
    "Chapter 5": "Transformer - GPT 아키텍처 구현",
    "Chapter 6": "Tokenization - BPE 알고리즘",
    "Chapter 7": "Training - 대규모 학습 기법",
    "Chapter 8": "nanochat - 최종 프로젝트"
}

# 학습 권장 순서
for chapter, topic in course_structure.items():
    print(f"{chapter}: {topic}")

# 결과:
# Chapter 1: Bigram Language Model - 가장 간단한 언어 모델
# ...

Andrej Karpathy는 Tesla의 AI 디렉터를 역임하고 OpenAI의 창립 멤버로 활동한 인물입니다. 그는 복잡한 개념을 쉽게 설명하는 능력으로 유명합니다.

YouTube의 Neural Networks: Zero to Hero 시리즈로 이미 많은 팬을 보유하고 있습니다. LLM101n은 그의 새로운 프로젝트입니다.

이 코스의 목표는 수강생이 직접 작은 LLM을 처음부터 끝까지 구현하는 것입니다. 복사 붙여넣기가 아니라 모든 코드를 이해하며 작성합니다.

코스는 가장 간단한 모델부터 시작합니다. Bigram 언어 모델은 바로 앞의 한 글자만 보고 다음 글자를 예측합니다.

너무 단순해 보이지만, 언어 모델의 기본 개념을 이해하는 데 완벽한 출발점입니다. 다음으로 Micrograd를 구현합니다.

이것은 자동 미분 엔진입니다. PyTorch나 TensorFlow가 내부적으로 하는 일을 직접 만들어보는 것입니다.

100줄도 안 되는 코드로 역전파 알고리즘의 핵심을 이해할 수 있습니다. Attention 메커니즘은 현대 LLM의 심장입니다.

문장에서 어떤 단어에 집중해야 하는지를 학습하는 방법입니다. 코스에서는 수식을 코드로 직접 번역하며 이 개념을 익힙니다.

Transformer 아키텍처를 구현하는 챕터가 하이라이트입니다. 논문 "Attention Is All You Need"에서 소개된 이 아키텍처가 현재 GPT, Claude 등 모든 주요 LLM의 기반입니다.

직접 구현해보면 왜 이 구조가 그토록 강력한지 체감할 수 있습니다. 마지막 프로젝트가 바로 nanochat입니다.

앞서 배운 모든 것을 종합하여 실제로 대화할 수 있는 작은 챗봇을 만듭니다. 크기는 작지만 GPT와 동일한 원리로 동작합니다.

이초보 씨는 이 코스를 따라가며 마침내 LLM이 어떻게 동작하는지 이해하게 되었습니다. 더 이상 LLM이 마법의 블랙박스가 아니었습니다.

행렬 연산과 확률의 조합으로 이루어진 정교한 시스템이었습니다. 무엇보다 좋은 점은 이 코스가 완전히 무료라는 것입니다.

GitHub에 모든 자료가 공개되어 있고, 유튜브에서 강의 영상을 볼 수 있습니다. 누구나 LLM 전문가로 성장할 수 있는 기회입니다.

실전 팁

💡 - 코스를 따라갈 때 코드를 직접 타이핑하세요, 복사 붙여넣기는 학습 효과가 떨어집니다

  • 각 챕터를 완료한 후 자신만의 변형을 시도해보면 이해가 깊어집니다

이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!

#Python#LLM#nanochat#OpenSource#DeepLearning#AI,LLM,Deep Learning

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

함께 보면 좋은 카드 뉴스