{ "cells": [ { "cell_type": "markdown", "id": "cell-0", "metadata": {}, "source": [ "# Continued Pre-training (CPT) with Unsloth for Text Completion\n", "\n", "Fine-tuning requires a GPU. If you don't have one locally, you can run this notebook for free on [Google Colab](https://colab.research.google.com/github/Liquid4All/cookbook/blob/main/finetuning/notebooks/cpt_text_completion_with_unsloth.ipynb) using a free NVIDIA T4 GPU instance.\n", "\n", "[](https://colab.research.google.com/github/Liquid4All/cookbook/blob/main/finetuning/notebooks/cpt_text_completion_with_unsloth.ipynb)\n", "\n", "### What's in this notebook?\n", "\n", "In this notebook you will learn how to use Continued Pre-training (CPT) with Unsloth to adapt a language model for text completion and generation tasks.\n", "We will use the [LFM2.5-1.2B-Base](https://docs.liquid.ai/docs/models/lfm25-1.2b-base) model and perform continued pre-training on the Tiny Stories dataset. This approach teaches the model domain-specific knowledge, writing styles, and creative text generation patterns. It's ideal for tasks like novel writing, creative content generation, or adapting models to specific narrative styles.\n", "\n", "We will cover\n", "- Environment setup\n", "- Data preparation for text completion\n", "- Continued pre-training on raw text data\n", "- Local inference with your new model\n", "- Model saving and exporting it into the format you need for **deployment**.\n", "\n", "### Deployment options\n", "\n", "LFM2.5 models are small and efficient, enabling deployment across a wide range of platforms:\n", "\n", "
| Deployment Target | \n", "Use Case | \n", "
|---|---|
| 📱 Android | \n", "Mobile apps on Android devices | \n", "
| 📱 iOS | \n", "Mobile apps on iPhone/iPad | \n", "
| 🍎 Apple Silicon Mac | \n", "Local inference on Mac with MLX | \n", "
| 🦙 llama.cpp | \n", "Local deployments on any hardware | \n", "
| 🦙 Ollama | \n", "Local inference with easy setup | \n", "
| 🖥️ LM Studio | \n", "Desktop app for local inference | \n", "
| ⚡ vLLM | \n", "Cloud deployments with high throughput | \n", "
| ☁️ Modal | \n", "Serverless cloud deployment | \n", "
| 🏗️ Baseten | \n", "Production ML infrastructure | \n", "
| 🚀 Fal | \n", "Fast inference API | \n", "
| Step | \n", "Training Loss | \n", "
|---|---|
| 1 | \n", "1.948500 | \n", "
| 2 | \n", "2.100600 | \n", "
| 3 | \n", "2.038700 | \n", "
| 4 | \n", "1.841400 | \n", "
| 5 | \n", "1.919800 | \n", "
| 6 | \n", "1.880100 | \n", "
| 7 | \n", "1.991700 | \n", "
| 8 | \n", "1.673600 | \n", "
| 9 | \n", "1.707500 | \n", "
| 10 | \n", "1.764900 | \n", "
| 11 | \n", "1.608300 | \n", "
| 12 | \n", "1.629300 | \n", "
| 13 | \n", "1.687400 | \n", "
| 14 | \n", "1.552600 | \n", "
| 15 | \n", "1.771100 | \n", "
| 16 | \n", "1.592900 | \n", "
| 17 | \n", "1.447700 | \n", "
| 18 | \n", "1.538600 | \n", "
| 19 | \n", "1.576500 | \n", "
| 20 | \n", "1.633300 | \n", "
| 21 | \n", "1.442300 | \n", "
| 22 | \n", "1.644200 | \n", "
| 23 | \n", "1.482100 | \n", "
| 24 | \n", "1.540400 | \n", "
| 25 | \n", "1.696300 | \n", "
| 26 | \n", "1.591800 | \n", "
| 27 | \n", "1.541900 | \n", "
| 28 | \n", "1.584800 | \n", "
| 29 | \n", "1.527000 | \n", "
| 30 | \n", "1.463100 | \n", "
| 31 | \n", "1.499900 | \n", "
| 32 | \n", "1.552300 | \n", "
| 33 | \n", "1.547400 | \n", "
| 34 | \n", "1.579900 | \n", "
| 35 | \n", "1.737500 | \n", "
| 36 | \n", "1.535600 | \n", "
| 37 | \n", "1.566700 | \n", "
| 38 | \n", "1.529500 | \n", "
| 39 | \n", "1.500500 | \n", "
| 40 | \n", "1.559000 | \n", "
| 41 | \n", "1.496500 | \n", "
| 42 | \n", "1.368400 | \n", "
| 43 | \n", "1.491800 | \n", "
| 44 | \n", "1.503800 | \n", "
| 45 | \n", "1.518500 | \n", "
| 46 | \n", "1.589500 | \n", "
| 47 | \n", "1.590900 | \n", "
| 48 | \n", "1.508600 | \n", "
| 49 | \n", "1.435400 | \n", "
| 50 | \n", "1.392900 | \n", "
| 51 | \n", "1.468800 | \n", "
| 52 | \n", "1.438200 | \n", "
| 53 | \n", "1.459800 | \n", "
| 54 | \n", "1.502600 | \n", "
| 55 | \n", "1.609300 | \n", "
| 56 | \n", "1.468000 | \n", "
| 57 | \n", "1.445300 | \n", "
| 58 | \n", "1.321300 | \n", "
| 59 | \n", "1.471600 | \n", "
| 60 | \n", "1.484800 | \n", "
| 61 | \n", "1.506500 | \n", "
| 62 | \n", "1.493900 | \n", "
| 63 | \n", "1.487400 | \n", "
| 64 | \n", "1.499600 | \n", "
| 65 | \n", "1.492300 | \n", "
| 66 | \n", "1.394600 | \n", "
| 67 | \n", "1.388500 | \n", "
| 68 | \n", "1.516000 | \n", "
| 69 | \n", "1.525500 | \n", "
| 70 | \n", "1.500400 | \n", "
| 71 | \n", "1.373900 | \n", "
| 72 | \n", "1.372500 | \n", "
| 73 | \n", "1.419600 | \n", "
| 74 | \n", "1.537400 | \n", "
| 75 | \n", "1.483700 | \n", "
| 76 | \n", "1.351800 | \n", "
| 77 | \n", "1.416500 | \n", "
| 78 | \n", "1.502200 | \n", "
| 79 | \n", "1.458800 | \n", "
| 80 | \n", "1.525600 | \n", "
| 81 | \n", "1.430200 | \n", "
| 82 | \n", "1.464300 | \n", "
| 83 | \n", "1.403100 | \n", "
| 84 | \n", "1.477700 | \n", "
| 85 | \n", "1.392200 | \n", "
| 86 | \n", "1.507900 | \n", "
| 87 | \n", "1.421500 | \n", "
| 88 | \n", "1.382900 | \n", "
| 89 | \n", "1.457400 | \n", "
| 90 | \n", "1.584200 | \n", "
| 91 | \n", "1.627100 | \n", "
| 92 | \n", "1.569000 | \n", "
| 93 | \n", "1.456600 | \n", "
| 94 | \n", "1.488700 | \n", "
| 95 | \n", "1.382300 | \n", "
| 96 | \n", "1.406900 | \n", "
| 97 | \n", "1.483800 | \n", "
| 98 | \n", "1.411100 | \n", "
| 99 | \n", "1.499400 | \n", "
| 100 | \n", "1.516900 | \n", "
| 101 | \n", "1.460300 | \n", "
| 102 | \n", "1.402500 | \n", "
| 103 | \n", "1.516100 | \n", "
| 104 | \n", "1.361700 | \n", "
| 105 | \n", "1.456400 | \n", "
| 106 | \n", "1.502800 | \n", "
| 107 | \n", "1.360700 | \n", "
| 108 | \n", "1.490900 | \n", "
| 109 | \n", "1.489200 | \n", "
| 110 | \n", "1.540500 | \n", "
| 111 | \n", "1.478900 | \n", "
| 112 | \n", "1.419700 | \n", "
| 113 | \n", "1.443300 | \n", "
| 114 | \n", "1.411400 | \n", "
| 115 | \n", "1.404500 | \n", "
| 116 | \n", "1.507100 | \n", "
| 117 | \n", "1.446600 | \n", "
| 118 | \n", "1.306800 | \n", "
| 119 | \n", "1.355300 | \n", "
| 120 | \n", "1.458700 | \n", "
| 121 | \n", "1.515100 | \n", "
| 122 | \n", "1.399100 | \n", "
| 123 | \n", "1.459800 | \n", "
| 124 | \n", "1.394000 | \n", "
| 125 | \n", "1.461300 | \n", "
| 126 | \n", "1.345500 | \n", "
| 127 | \n", "1.408000 | \n", "
| 128 | \n", "1.493800 | \n", "
| 129 | \n", "1.360900 | \n", "
| 130 | \n", "1.476200 | \n", "
| 131 | \n", "1.436100 | \n", "
| 132 | \n", "1.431200 | \n", "
| 133 | \n", "1.332400 | \n", "
| 134 | \n", "1.439800 | \n", "
| 135 | \n", "1.411300 | \n", "
| 136 | \n", "1.378000 | \n", "
| 137 | \n", "1.474600 | \n", "
| 138 | \n", "1.314700 | \n", "
| 139 | \n", "1.557500 | \n", "
| 140 | \n", "1.349400 | \n", "
| 141 | \n", "1.393400 | \n", "
| 142 | \n", "1.383300 | \n", "
| 143 | \n", "1.402000 | \n", "
| 144 | \n", "1.552400 | \n", "
| 145 | \n", "1.450500 | \n", "
| 146 | \n", "1.506800 | \n", "
| 147 | \n", "1.563000 | \n", "
| 148 | \n", "1.365200 | \n", "
| 149 | \n", "1.439300 | \n", "
| 150 | \n", "1.459100 | \n", "
| 151 | \n", "1.512900 | \n", "
| 152 | \n", "1.487400 | \n", "
| 153 | \n", "1.395200 | \n", "
| 154 | \n", "1.440100 | \n", "
| 155 | \n", "1.535400 | \n", "
| 156 | \n", "1.382100 | \n", "
| 157 | \n", "1.539200 | \n", "
"
],
"text/plain": [
"
\n",
"
\n",
"
\n",
"\n",
" Join Discord if you need help + ⭐️ Star us on Github ⭐️\n",
"\n",
" This notebook and all Unsloth notebooks are licensed [LGPL-3.0](https://github.com/unslothai/notebooks?tab=LGPL-3.0-1-ov-file#readme)\n",
"