mirror of
https://github.com/rasbt/LLMs-from-scratch.git
synced 2026-04-10 12:33:42 +00:00
Add user interface to ch06 and ch07 (#366)
* Add user interface to ch06 and ch07 * pep8 * fix url
This commit is contained in:
committed by
GitHub
parent
6f6dfb6796
commit
76e9a9ec02
@@ -29,7 +29,7 @@ pip install chainlit
|
||||
This folder contains 2 files:
|
||||
|
||||
1. [`app_orig.py`](app_orig.py): This file loads and uses the original GPT-2 weights from OpenAI.
|
||||
2. [`app_own.py`](app_own.py): This file loads and uses the GPT-2 weights we generated in chapter 5. This requires that you execute the [`../01_main-chapter-code/ch05.ipynb`] file first.
|
||||
2. [`app_own.py`](app_own.py): This file loads and uses the GPT-2 weights we generated in chapter 5. This requires that you execute the [`../01_main-chapter-code/ch05.ipynb`](../01_main-chapter-code/ch05.ipynb) file first.
|
||||
|
||||
(Open and inspect these files to learn more.)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
||||
|
||||
def get_model_and_tokenizer():
|
||||
"""
|
||||
Code to loads a GPT-2 model with pretrained weights from OpenAI.
|
||||
Code to load a GPT-2 model with pretrained weights from OpenAI.
|
||||
The code is similar to chapter 5.
|
||||
The model will be downloaded automatically if it doesn't exist in the current folder, yet.
|
||||
"""
|
||||
|
||||
@@ -22,7 +22,7 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
||||
|
||||
def get_model_and_tokenizer():
|
||||
"""
|
||||
Code to loads a GPT-2 model with pretrained weights generated in chapter 5.
|
||||
Code to load a GPT-2 model with pretrained weights generated in chapter 5.
|
||||
This requires that you run the code in chapter 5 first, which generates the necessary model.pth file.
|
||||
"""
|
||||
|
||||
|
||||
@@ -12,55 +12,11 @@ import urllib
|
||||
|
||||
import numpy as np
|
||||
import tensorflow as tf
|
||||
import tiktoken
|
||||
import torch
|
||||
import torch.nn as nn
|
||||
from torch.utils.data import Dataset, DataLoader
|
||||
from tqdm import tqdm
|
||||
|
||||
|
||||
#####################################
|
||||
# Chapter 2
|
||||
#####################################
|
||||
|
||||
|
||||
class GPTDatasetV1(Dataset):
|
||||
def __init__(self, txt, tokenizer, max_length, stride):
|
||||
self.input_ids = []
|
||||
self.target_ids = []
|
||||
|
||||
# Tokenize the entire text
|
||||
token_ids = tokenizer.encode(txt, allowed_special={"<|endoftext|>"})
|
||||
|
||||
# Use a sliding window to chunk the book into overlapping sequences of max_length
|
||||
for i in range(0, len(token_ids) - max_length, stride):
|
||||
input_chunk = token_ids[i:i + max_length]
|
||||
target_chunk = token_ids[i + 1: i + max_length + 1]
|
||||
self.input_ids.append(torch.tensor(input_chunk))
|
||||
self.target_ids.append(torch.tensor(target_chunk))
|
||||
|
||||
def __len__(self):
|
||||
return len(self.input_ids)
|
||||
|
||||
def __getitem__(self, idx):
|
||||
return self.input_ids[idx], self.target_ids[idx]
|
||||
|
||||
|
||||
def create_dataloader_v1(txt, batch_size=4, max_length=256,
|
||||
stride=128, shuffle=True, drop_last=True, num_workers=0):
|
||||
# Initialize the tokenizer
|
||||
tokenizer = tiktoken.get_encoding("gpt2")
|
||||
|
||||
# Create dataset
|
||||
dataset = GPTDatasetV1(txt, tokenizer, max_length, stride)
|
||||
|
||||
# Create dataloader
|
||||
dataloader = DataLoader(
|
||||
dataset, batch_size=batch_size, shuffle=shuffle, drop_last=drop_last, num_workers=num_workers)
|
||||
|
||||
return dataloader
|
||||
|
||||
|
||||
#####################################
|
||||
# Chapter 3
|
||||
#####################################
|
||||
|
||||
Reference in New Issue
Block a user