Difference between revisions of "Fine-tuning"

From
Jump to: navigation, search
m
m
 
(40 intermediate revisions by the same user not shown)
Line 20: Line 20:
 
[https://www.bing.com/news/search?q=ai+Fine+tuning&qft=interval%3d%228%22 ...Bing News]
 
[https://www.bing.com/news/search?q=ai+Fine+tuning&qft=interval%3d%228%22 ...Bing News]
  
* [[Embedding]] ... [[Fine-tuning]] ... [[Agents#AI-Powered Search|Search]] ... [[Clustering]] ... [[Recommendation]] ... [[Anomaly Detection]] ... [[Classification]] ... [[Dimensional Reduction]].  [[...find outliers]]
+
* [[Embedding]] ... [[Fine-tuning]] ... [[Retrieval-Augmented Generation (RAG)|RAG]] ... [[Agents#AI-Powered Search|Search]] ... [[Clustering]] ... [[Recommendation]] ... [[Anomaly Detection]] ... [[Classification]] ... [[Dimensional Reduction]].  [[...find outliers]]
 
* [[Prompting vs AI Model Fine-Tuning vs AI Embeddings]]
 
* [[Prompting vs AI Model Fine-Tuning vs AI Embeddings]]
 
* [[Alpaca]]
 
* [[Alpaca]]
* [https://arstechnica.com/information-technology/2023/08/you-can-now-train-chatgpt-on-your-own-documents-via-api/ You can now train ChatGPT on your own documents via API | Benj Edwards - ARS Technica] ... Developers can now bring their own data to customize GPT-3.5 Turbo outputs; running [[supervised]] fine-tuning to make this model perform better for their use cases using the command-line tool [https://en.wikipedia.org/wiki/CURL cURL] to query an API web address
+
* [[Train Large Language Model (LLM) From Scratch]]
 +
* [https://arstechnica.com/information-technology/2023/08/you-can-now-train-chatgpt-on-your-own-documents-via-api/ You can now train ChatGPT on your own documents via API | Benj Edwards - ARS Technica] ... Developers can now bring their own data to customize GPT-3.5 Turbo outputs; running [[supervised]] fine-tuning to make this model perform better for their use cases by uploading documents using the command-line tool [https://en.wikipedia.org/wiki/CURL cURL] to query an API web address
 +
** [https://platform.openai.com/docs/guides/fine-tuning Fine-tuning for GPT 3.5 Turbo | OpenAI]
 +
* [https://towardsdatascience.com/fine-tuning-large-language-models-llms-23473d763b91 Fine-Tuning Large Language Models (LLMs) | Shawhin Talebi - Medium] ... A conceptual overview with example Python code
 +
 
  
 
A process of retraining a language model on a new dataset of data. This can be used to improve the model's performance on a specific task, such as generating text, translating languages, or answering questions. Fine-tuning is a way to add new knowledge to an existing AI model. It’s a simple upgrade that allows the model to learn new information.  
 
A process of retraining a language model on a new dataset of data. This can be used to improve the model's performance on a specific task, such as generating text, translating languages, or answering questions. Fine-tuning is a way to add new knowledge to an existing AI model. It’s a simple upgrade that allows the model to learn new information.  
Line 34: Line 38:
  
  
Here are some examples of fine-tuning:
+
<youtube>Ezz_5csCJqI</youtube>
 +
<youtube>y9PHWGOa8HA</youtube>
 +
<youtube>HMbctCYJLbw</youtube>
 +
<youtube>LitybCiLhSc</youtube>
 +
 
 +
 
 +
 
 +
= Methods For Fine-tuning an LLM =
 +
* [https://dr-bruce-cottman.medium.com/part-1-eight-major-methods-for-finetuning-an-llm-6f746c7259ee Part 1: Eight Major Methods For FineTuning an LLM | Bruce Cottman - Medium] ... Gradient-based, LoRA, QLoRA, and four others as advanced variations of ULMFiT: selecting a small subset of the available parameters in a trained LLM.
 +
* [https://www.lakera.ai/insights/llm-fine-tuning-guide The Ultimate Guide to LLM Fine Tuning: Best Practices & Tools | Lakera]
 +
* [https://www.simform.com/blog/completeguide-finetuning-llm/ A Complete Guide to Fine Tuning Large Language Models | Hiren Dhaduk]
 +
* [https://www.analyticsvidhya.com/blog/2023/08/fine-tuning-large-language-models/ A Comprehensive Guide to Fine-Tuning Large Language Models | Babina Banjara]
 +
* [https://research.aimultiple.com/llm-fine-tuning/ LLM Fine Tuning Guide for Enterprises in 2023 | Cem Dilmegani]
 +
* [https://www.unite.ai/understanding-llm-fine-tuning-tailoring-large-language-models-to-your-unique-requirements/ Understanding LLM Fine-Tuning: Tailoring Large Language Models to Your Unique Requirements | Aayush Mittal]
 +
* [https://www.analyticsvidhya.com/blog/2023/08/fine-tuning-large-language-models/ Fine-tuning Large Language Models | AnalyticsVidhya]
 +
 
 +
 
 +
Fine-tuning can be applied to various types of models, such as convolutional neural networks, recurrent neural networks, and large language models. There are different ways to fine-tune a model, depending on the amount and similarity of the data available for the new task, the complexity and size of the model, and the computational resources and time constraints.  Here are some examples of Fine-tuning:
  
 
* Fine-tuning OpenAI's base models such as Davinc, Curie, Babbage, and Ada to improve their performance on a variety of tasks, such as generating text, translating languages, and answering questions.
 
* Fine-tuning OpenAI's base models such as Davinc, Curie, Babbage, and Ada to improve their performance on a variety of tasks, such as generating text, translating languages, and answering questions.
 
* Fine-tuning a binary classifier to rate each completion for truthfulness based on expert-labeled examples.
 
* Fine-tuning a binary classifier to rate each completion for truthfulness based on expert-labeled examples.
 
* Incorporating proprietary content into a language model to improve its ability to provide relevant answers to questions.
 
* Incorporating proprietary content into a language model to improve its ability to provide relevant answers to questions.
 +
* Full-model fine-tuning: This method involves updating all the parameters of the pre-trained model on the new task. This method can achieve high performance, but it is also computationally expensive and prone to overfitting if the new data is small or noisy.
 +
* Partial-model fine-tuning: This method involves updating only a subset of the parameters of the pre-trained model, while keeping the rest fixed or frozen. This method can reduce the computational cost and prevent overfitting, but it also requires choosing which layers or modules to fine-tune and which ones to freeze. A common heuristic is to freeze the earlier layers that capture general features and fine-tune the later layers that capture task-specific features.
 +
* Adapter-based fine-tuning: This method involves adding small neural networks, called adapters, to each layer or module of the pre-trained model, and updating only the parameters of the adapters on the new task, while keeping the original parameters frozen. This method can achieve parameter-efficient fine-tuning, as adapters have much fewer parameters than the original model, and preserve the performance and robustness of the pre-trained model.
  
 
Fine-tuning is a powerful technique that can be used to improve the performance of language models on a variety of tasks. If you are looking to improve the performance of a language model on a specific task, fine-tuning is a good option to consider.
 
Fine-tuning is a powerful technique that can be used to improve the performance of language models on a variety of tasks. If you are looking to improve the performance of a language model on a specific task, fine-tuning is a good option to consider.
  
 +
== Instruction Tuning ==
 +
* [[Agents]] ... [[Robotic Process Automation (RPA)|Robotic Process Automation]] ... [[Assistants]] ... [[Personal Companions]] ... [[Personal Productivity|Productivity]] ... [[Email]] ... [[Negotiation]] ... [[LangChain]]
 +
* [https://github.com/SinclairCoder/Instruction-Tuning-Papers Instruction-Tuning-Papers | GitHub]
 +
* [https://self-supervised.cs.jhu.edu/sp2023/files/Instruction%20tuning%20of%20LLMs%20-%20Talk@JHU.pdf Instruction Tuning of Large Language Models | Yizhong Wang - John Hopkins University (JHU)]
 +
* [https://arxiv.org/abs/2304.03277 Instruction Tuning with GPT-4 | B. Peng, C. Li, P. He, M. Galley, & J. Gao - arXiv]
 +
* [https://smilegate.ai/en/2021/09/12/instruction-tuning-flan/ Instruction tuning – FLAN | Convergence Research Team Hongmae Shim - Smilegate AI]
 +
* [https://sh-tsang.medium.com/brief-review-flan-palm-scaling-instruction-finetuned-language-models-79f47cbcb882 Brief Review — Flan-PaLM: Scaling Instruction-Finetuned Language Models | Sik-Ho Tsang - Medium] ... Flan-PaLM, PaLM Fine-Tuned Using FLAN
 +
 +
 +
Instructional tuning is a technique that aims to teach [[Large Language Model (LLM)]] to follow natural language instructions, such as prompts, examples, and constraints, to perform better on various [[Natural Language Processing (NLP)]] tasks. Instructional tuning can improve the capabilities and controllability of LLMs across different tasks, domains, and modalities. It can also enable [[Large Language Model (LLM)|LLMs]] to generalize to unseen tasks by using instructions as a bridge between the pretraining objective and the user’s objective.
 +
 +
Instructional tuning involves fine-tuning [[Large Language Model (LLM)|LLMs]] with instructional data, which consists of pairs of human-written instructions and desired outputs. For example, an instruction could be “Write a summary of the following article in three sentences” and an output could be “The article discusses the benefits of instructional tuning for [[Large Language Model (LLM)|large language models]]. It presents a survey paper that covers the fundamentals, challenges, and applications of this technique. It also introduces a new method called LoRA that leverages [[Large Language Model (LLM)|LLMs]] to generate instructional data for themselves.” Instructional data can be collected from various sources, such as existing NLP datasets, expert annotations, or even [[Large Language Model (LLM)|LLMs]] themselves.
 +
 +
=== <span id="Implementing Chain of Thought (CoT)"></span>Implementing Chain of Thought (CoT) ===
 +
Provide context, examples and prompt to ask model for [[Chain of Thought (CoT)]] output specific to task and use this output to tune a model; which is smaller and/or cheaper to inference.
 +
 +
To use [[Chain of Thought (CoT)|CoT]] [[Large Language Model (LLM)]] output to fine-tune a model, you can follow these steps:
 +
 +
# Generate [[Chain of Thought (CoT)|CoT]] demonstrations. This can be done by prompting a large [[Large Language Model (LLM)|LLM]] to solve complex questions via [[Few Shot Learning#Zero-Shot Prompting|zero-shot]] [[Chain of Thought (CoT)|CoT]] reasoning. For example, you could prompt the [[Large Language Model (LLM)|LLM]] to solve a math problem, and then ask it to explain its reasoning step by step.
 +
# Collect a dataset of [[Chain of Thought (CoT)|CoT]] demonstrations. Once you have generated a set of [[Chain of Thought (CoT)|CoT]] demonstrations, you can collect them into a dataset. This dataset will be used to fine-tune your model.
 +
# Fine-tune your model on the [[Chain of Thought (CoT)|CoT]] dataset. You can use any standard fine-tuning technique to fine-tune your model on the [[Chain of Thought (CoT)|CoT]] dataset. For example, you could use supervised learning to train your model to predict the next step in a [[Chain of Thought (CoT)|CoT]] demonstration sequence.
 +
# Evaluate your fine-tuned model. Once you have fine-tuned your model, you can evaluate its performance on a held-out test set of [[Chain of Thought (CoT)|CoT]] demonstrations.
 +
 +
== LoRA ==
 +
* [https://arxiv.org/abs/2106.09685 LoRA: Low-Rank Adaptation of Large Language Models | E. Hu, Y. Shen, P. Wallis, Z. Allen-Zhu, Y. Li, S. Wang, L. Wang, & W. Chen]
 +
 +
Low-Rank Adaptation (LoRA) is a technique that leverages [[Large Language Model (LLM)]]s to generate instructional data for themselves. Instructional data consists of pairs of human-written instructions and desired outputs, which can be used to fine-tune [[Large Language Model (LLM)|LLMs]] to follow natural language instructions. LoRA involves prompting [[Large Language Model (LLM)|LLMs]] to generate instructions and instances for various [[Natural Language Processing (NLP)]] tasks, such as [[Summarization]], [[Sentiment Analysis]], question answering, etc. The generated instructional data can then be used to fine-tune the [[Large Language Model (LLM)|LLMs]] on the same or different tasks, improving their capabilities and controllability.
 +
 +
LoRA was proposed by a team of researchers from [[Microsoft]] Research in a paper titled “LoRA: [[Self-Supervised]] Generation of Instructional Data for [[Large Language Model (LLM)|Large Language Models]]” . The paper introduces a framework for [[Self-Supervised]] generation of instructional data using [[Large Language Model (LLM)|LLMs]], such as [[GPT-4]]. The paper also demonstrates that LoRA can enable [[Large Language Model (LLM)|LLMs]] to learn new tasks and skills by generating instructions and instances for them.
 +
 +
LoRA generates instructions and instances by using a two-step process:
 +
 +
* First, LoRA prompts the LLM to generate instructions for various NLP tasks, such as summarization, sentiment analysis, question answering, etc. The instructions are natural language descriptions of what the LLM should do given an input text. For example, an instruction for summarization could be “Write a summary of the following article in three sentences”. LoRA uses a set of templates and heuristics to guide the LLM to generate diverse and valid instructions.
 +
* Second, LoRA prompts the LLM to generate instances for each instruction, which are pairs of input texts and desired outputs. The input texts are sampled from a large corpus of text, such as Wikipedia or Common Crawl. The desired outputs are generated by the LLM itself, following the instruction. For example, an instance for summarization could be:
 +
 +
<b>Input</b>: <i>The 2023 FIFA World Cup is scheduled to be the 23rd edition of the FIFA World Cup, the quadrennial international men’s association football championship contested by the national teams of the member associations of FIFA. It is scheduled to take place in Qatar from 21 November to 18 December 2023. This will be the first World Cup ever to be held in the Arab world and the first in a Muslim-majority country. This will be the second World Cup held entirely in Asia after the 2002 tournament in South Korea and Japan. In addition, the tournament will be the last to involve 32 teams, with an increase to 48 teams scheduled for the 2026 tournament in Canada, Mexico and United States.</i>
 +
 +
<b>Output</b>: <i>The 2023 FIFA World Cup is a global football tournament that will take place in Qatar from November to December 2023. It will be the first World Cup in the Arab world and a Muslim-majority country, and the second in Asia. The tournament will feature 32 teams for the last time before expanding to 48 teams in 2026.</i>
 +
 +
LoRA ensures the quality of generated instructions and instances by using several techniques, such as:
 +
 +
* Filtering out invalid or duplicate instructions based on syntactic and semantic criteria, such as length, readability, specificity, and uniqueness.
 +
* Evaluating the quality of generated instances based on metrics such as fluency, coherence, relevance, and accuracy.
 +
* Comparing the generated instances with human-written outputs from existing NLP datasets or expert annotations, and selecting the ones that have high similarity or agreement.
 +
* Applying post-processing steps such as spelling correction, punctuation normalization, and capitalization to improve the readability and consistency of the generated instances.
  
<youtube>Ezz_5csCJqI</youtube>
+
== QLoRA ==
<youtube>y9PHWGOa8HA</youtube>
+
Quantized Low Rank Adapters (QLoRA), a method for efficient fine-tuning of quantized large language models (LLMs). Here is a summary of what I have learned from the web search results:
<youtube>HMbctCYJLbw</youtube>
+
 
<youtube>LitybCiLhSc</youtube>
+
* QLoRA is a method that combines low-rank matrix factorization and 4-bit quantization to compress the weights of the LLM and the adapters. Adapters are small neural networks that are added to each layer of the LLM and are trained on a specific task, while the LLM itself is frozen12.
 +
* QLoRA reduces the [[memory]] usage of fine-tuning LLMs by up to 98%, enabling fine-tuning LLMs with billions of parameters on a single GPU, which would otherwise require hundreds of GBs of [[memory]].
 +
* QLoRA preserves the performance of full 16-bit fine-tuning on various tasks, such as instruction following and chatbot generation. QLoRA has been applied to fine-tune LLMs such as LLaMA and T5 on these tasks and has achieved state-of-the-art results.
 +
* QLoRA introduces several innovations to save [[memory]] and improve speed, such as:
 +
** NormalFloat (NF4), a new data type that is information theoretically optimal for normally distributed weights12.
 +
** Double Quantization, a technique that reduces the average [[memory]] footprint by quantizing the quantization constants12.
 +
** Paged Optimizers, a method that manages [[memory]] spikes by paging out optimizer states12.
 +
 
 +
== ULMFiT ==
 +
Universal Language Model Fine-tuning (ULMFiT) is a method for fine-tuning a pre-trained language model for a specific downstream task, such as text classification, sentiment analysis, or hate speech detection. ULMFiT can be applied to any task in natural language processing (NLP). ULMFiT has three main steps:
 +
 
 +
* <b>General language model pre-training</b>: This step involves training a language model on a large and diverse corpus of text, such as Wikipedia, to learn general linguistic features and patterns. ULMFiT uses a 3-layer AWD-LSTM architecture for its language model.
 +
* <b>Target language model fine-tuning</b>: This step involves fine-tuning the pre-trained language model on the text data of the target task, such as movie reviews or tweets, to adapt it to the specific domain and vocabulary. ULMFiT introduces several techniques to improve fine-tuning, such as discriminative fine-tuning, which adjusts the learning rate for each layer according to its importance; slanted triangular learning rates, which increases and then decreases the learning rate during training; and gradual unfreezing, which unfreezes and trains one layer at a time from the top to the bottom.
 +
* <b>Target classifier fine-tuning</b>: This step involves adding a classifier layer on top of the fine-tuned language model and training it on the labeled data of the target task, such as positive or negative sentiment. ULMFiT uses the same techniques as in the previous step to fine-tune the classifier.
 +
 
 +
ULMFiT has achieved state-of-the-art results on six text classification tasks, reducing the error by 18-24% on most datasets. It has also shown that it can match the performance of training from scratch on 100 times more data with only 100 labeled examples.
 +
 
 +
== Gradient-based ==
 +
Gradient-based fine-tuning is a method of adapting a pre-trained model to a specific task or domain by updating its parameters using gradient descent. Gradient descent is an optimization algorithm that iteratively adjusts the parameters of a model to minimize a loss function.
 +
 
 +
Gradient-based fine-tuning can be applied to various types of models, such as large language models, object detection models, or image classification models. The main advantage of gradient-based fine-tuning is that it can leverage the knowledge and generalization ability of the pre-trained model and improve its performance on the target task or domain. However, gradient-based fine-tuning also has some challenges and limitations, such as:
 +
 
 +
* It can be computationally expensive and inefficient, especially for large models with many parameters.
 +
* It can cause overfitting or catastrophic forgetting, which means that the fine-tuned model may lose its original capabilities or perform poorly on out-of-distribution data.
 +
* It can be sensitive to the choice of hyperparameters, such as the learning rate, the number of fine-tuning steps, or the regularization techniques.
 +
 
 +
To address these challenges and limitations, researchers have proposed various methods and techniques to improve gradient-based fine-tuning, such as:
 +
 
 +
* Using sparse or local attention to reduce the computation cost and [[memory]] consumption of fine-tuning large language models with long context sizes.
 +
* Learning trainable constraints or projection radii for each layer of the model to control the distance between the fine-tuned model and the pre-trained model.
 +
* Meta-learning dedicated meta-models or hypermodels to generate task-specific parameters or loss functions for the downstream model.
 +
* Customizing different learning rates or data augmentation strategies for each layer or sample of the model.
  
 
= <span id="Large Language Model (LLM) Ecosystem Explained"></span>Large Language Model (LLM) Ecosystem Explained =
 
= <span id="Large Language Model (LLM) Ecosystem Explained"></span>Large Language Model (LLM) Ecosystem Explained =

Latest revision as of 09:04, 23 March 2024

YouTube ... Quora ...Google search ...Google News ...Bing News


A process of retraining a language model on a new dataset of data. This can be used to improve the model's performance on a specific task, such as generating text, translating languages, or answering questions. Fine-tuning is a way to add new knowledge to an existing AI model. It’s a simple upgrade that allows the model to learn new information.

Here are some more detailed information on fine-tuning:

  • Fine-tuning is a relatively simple process. The first step is to select a pre-trained language model. There are many pre-trained language models available, such as GPT-3, RoBERTa, and XLNet. Once you have selected a pre-trained language model, you need to gather a dataset of data for fine-tuning. This dataset should be relevant to the task that you want the model to perform. For example, if you want to fine-tune a language model for question answering, you would need to gather a dataset of questions and answers.
  • The next step is to fine-tune the language model on the dataset of data. This is done by using a technique called supervised learning. In supervised learning, the model is given a set of labeled examples. In the case of fine-tuning, the labels are the answers to the questions in the dataset. The model is then trained to predict the labels for the unlabeled examples in the dataset.
  • Fine-tuning can be a time-consuming process, but it can significantly improve the performance of a language model on a specific task. For example, fine-tuning a language model on a dataset of question and answers can improve the model's ability to answer new questions.



Methods For Fine-tuning an LLM


Fine-tuning can be applied to various types of models, such as convolutional neural networks, recurrent neural networks, and large language models. There are different ways to fine-tune a model, depending on the amount and similarity of the data available for the new task, the complexity and size of the model, and the computational resources and time constraints. Here are some examples of Fine-tuning:

  • Fine-tuning OpenAI's base models such as Davinc, Curie, Babbage, and Ada to improve their performance on a variety of tasks, such as generating text, translating languages, and answering questions.
  • Fine-tuning a binary classifier to rate each completion for truthfulness based on expert-labeled examples.
  • Incorporating proprietary content into a language model to improve its ability to provide relevant answers to questions.
  • Full-model fine-tuning: This method involves updating all the parameters of the pre-trained model on the new task. This method can achieve high performance, but it is also computationally expensive and prone to overfitting if the new data is small or noisy.
  • Partial-model fine-tuning: This method involves updating only a subset of the parameters of the pre-trained model, while keeping the rest fixed or frozen. This method can reduce the computational cost and prevent overfitting, but it also requires choosing which layers or modules to fine-tune and which ones to freeze. A common heuristic is to freeze the earlier layers that capture general features and fine-tune the later layers that capture task-specific features.
  • Adapter-based fine-tuning: This method involves adding small neural networks, called adapters, to each layer or module of the pre-trained model, and updating only the parameters of the adapters on the new task, while keeping the original parameters frozen. This method can achieve parameter-efficient fine-tuning, as adapters have much fewer parameters than the original model, and preserve the performance and robustness of the pre-trained model.

Fine-tuning is a powerful technique that can be used to improve the performance of language models on a variety of tasks. If you are looking to improve the performance of a language model on a specific task, fine-tuning is a good option to consider.

Instruction Tuning


Instructional tuning is a technique that aims to teach Large Language Model (LLM) to follow natural language instructions, such as prompts, examples, and constraints, to perform better on various Natural Language Processing (NLP) tasks. Instructional tuning can improve the capabilities and controllability of LLMs across different tasks, domains, and modalities. It can also enable LLMs to generalize to unseen tasks by using instructions as a bridge between the pretraining objective and the user’s objective.

Instructional tuning involves fine-tuning LLMs with instructional data, which consists of pairs of human-written instructions and desired outputs. For example, an instruction could be “Write a summary of the following article in three sentences” and an output could be “The article discusses the benefits of instructional tuning for large language models. It presents a survey paper that covers the fundamentals, challenges, and applications of this technique. It also introduces a new method called LoRA that leverages LLMs to generate instructional data for themselves.” Instructional data can be collected from various sources, such as existing NLP datasets, expert annotations, or even LLMs themselves.

Implementing Chain of Thought (CoT)

Provide context, examples and prompt to ask model for Chain of Thought (CoT) output specific to task and use this output to tune a model; which is smaller and/or cheaper to inference.

To use CoT Large Language Model (LLM) output to fine-tune a model, you can follow these steps:

  1. Generate CoT demonstrations. This can be done by prompting a large LLM to solve complex questions via zero-shot CoT reasoning. For example, you could prompt the LLM to solve a math problem, and then ask it to explain its reasoning step by step.
  2. Collect a dataset of CoT demonstrations. Once you have generated a set of CoT demonstrations, you can collect them into a dataset. This dataset will be used to fine-tune your model.
  3. Fine-tune your model on the CoT dataset. You can use any standard fine-tuning technique to fine-tune your model on the CoT dataset. For example, you could use supervised learning to train your model to predict the next step in a CoT demonstration sequence.
  4. Evaluate your fine-tuned model. Once you have fine-tuned your model, you can evaluate its performance on a held-out test set of CoT demonstrations.

LoRA

Low-Rank Adaptation (LoRA) is a technique that leverages Large Language Model (LLM)s to generate instructional data for themselves. Instructional data consists of pairs of human-written instructions and desired outputs, which can be used to fine-tune LLMs to follow natural language instructions. LoRA involves prompting LLMs to generate instructions and instances for various Natural Language Processing (NLP) tasks, such as Summarization, Sentiment Analysis, question answering, etc. The generated instructional data can then be used to fine-tune the LLMs on the same or different tasks, improving their capabilities and controllability.

LoRA was proposed by a team of researchers from Microsoft Research in a paper titled “LoRA: Self-Supervised Generation of Instructional Data for Large Language Models” . The paper introduces a framework for Self-Supervised generation of instructional data using LLMs, such as GPT-4. The paper also demonstrates that LoRA can enable LLMs to learn new tasks and skills by generating instructions and instances for them.

LoRA generates instructions and instances by using a two-step process:

  • First, LoRA prompts the LLM to generate instructions for various NLP tasks, such as summarization, sentiment analysis, question answering, etc. The instructions are natural language descriptions of what the LLM should do given an input text. For example, an instruction for summarization could be “Write a summary of the following article in three sentences”. LoRA uses a set of templates and heuristics to guide the LLM to generate diverse and valid instructions.
  • Second, LoRA prompts the LLM to generate instances for each instruction, which are pairs of input texts and desired outputs. The input texts are sampled from a large corpus of text, such as Wikipedia or Common Crawl. The desired outputs are generated by the LLM itself, following the instruction. For example, an instance for summarization could be:

Input: The 2023 FIFA World Cup is scheduled to be the 23rd edition of the FIFA World Cup, the quadrennial international men’s association football championship contested by the national teams of the member associations of FIFA. It is scheduled to take place in Qatar from 21 November to 18 December 2023. This will be the first World Cup ever to be held in the Arab world and the first in a Muslim-majority country. This will be the second World Cup held entirely in Asia after the 2002 tournament in South Korea and Japan. In addition, the tournament will be the last to involve 32 teams, with an increase to 48 teams scheduled for the 2026 tournament in Canada, Mexico and United States.

Output: The 2023 FIFA World Cup is a global football tournament that will take place in Qatar from November to December 2023. It will be the first World Cup in the Arab world and a Muslim-majority country, and the second in Asia. The tournament will feature 32 teams for the last time before expanding to 48 teams in 2026.

LoRA ensures the quality of generated instructions and instances by using several techniques, such as:

  • Filtering out invalid or duplicate instructions based on syntactic and semantic criteria, such as length, readability, specificity, and uniqueness.
  • Evaluating the quality of generated instances based on metrics such as fluency, coherence, relevance, and accuracy.
  • Comparing the generated instances with human-written outputs from existing NLP datasets or expert annotations, and selecting the ones that have high similarity or agreement.
  • Applying post-processing steps such as spelling correction, punctuation normalization, and capitalization to improve the readability and consistency of the generated instances.

QLoRA

Quantized Low Rank Adapters (QLoRA), a method for efficient fine-tuning of quantized large language models (LLMs). Here is a summary of what I have learned from the web search results:

  • QLoRA is a method that combines low-rank matrix factorization and 4-bit quantization to compress the weights of the LLM and the adapters. Adapters are small neural networks that are added to each layer of the LLM and are trained on a specific task, while the LLM itself is frozen12.
  • QLoRA reduces the memory usage of fine-tuning LLMs by up to 98%, enabling fine-tuning LLMs with billions of parameters on a single GPU, which would otherwise require hundreds of GBs of memory.
  • QLoRA preserves the performance of full 16-bit fine-tuning on various tasks, such as instruction following and chatbot generation. QLoRA has been applied to fine-tune LLMs such as LLaMA and T5 on these tasks and has achieved state-of-the-art results.
  • QLoRA introduces several innovations to save memory and improve speed, such as:
    • NormalFloat (NF4), a new data type that is information theoretically optimal for normally distributed weights12.
    • Double Quantization, a technique that reduces the average memory footprint by quantizing the quantization constants12.
    • Paged Optimizers, a method that manages memory spikes by paging out optimizer states12.

ULMFiT

Universal Language Model Fine-tuning (ULMFiT) is a method for fine-tuning a pre-trained language model for a specific downstream task, such as text classification, sentiment analysis, or hate speech detection. ULMFiT can be applied to any task in natural language processing (NLP). ULMFiT has three main steps:

  • General language model pre-training: This step involves training a language model on a large and diverse corpus of text, such as Wikipedia, to learn general linguistic features and patterns. ULMFiT uses a 3-layer AWD-LSTM architecture for its language model.
  • Target language model fine-tuning: This step involves fine-tuning the pre-trained language model on the text data of the target task, such as movie reviews or tweets, to adapt it to the specific domain and vocabulary. ULMFiT introduces several techniques to improve fine-tuning, such as discriminative fine-tuning, which adjusts the learning rate for each layer according to its importance; slanted triangular learning rates, which increases and then decreases the learning rate during training; and gradual unfreezing, which unfreezes and trains one layer at a time from the top to the bottom.
  • Target classifier fine-tuning: This step involves adding a classifier layer on top of the fine-tuned language model and training it on the labeled data of the target task, such as positive or negative sentiment. ULMFiT uses the same techniques as in the previous step to fine-tune the classifier.

ULMFiT has achieved state-of-the-art results on six text classification tasks, reducing the error by 18-24% on most datasets. It has also shown that it can match the performance of training from scratch on 100 times more data with only 100 labeled examples.

Gradient-based

Gradient-based fine-tuning is a method of adapting a pre-trained model to a specific task or domain by updating its parameters using gradient descent. Gradient descent is an optimization algorithm that iteratively adjusts the parameters of a model to minimize a loss function.

Gradient-based fine-tuning can be applied to various types of models, such as large language models, object detection models, or image classification models. The main advantage of gradient-based fine-tuning is that it can leverage the knowledge and generalization ability of the pre-trained model and improve its performance on the target task or domain. However, gradient-based fine-tuning also has some challenges and limitations, such as:

  • It can be computationally expensive and inefficient, especially for large models with many parameters.
  • It can cause overfitting or catastrophic forgetting, which means that the fine-tuned model may lose its original capabilities or perform poorly on out-of-distribution data.
  • It can be sensitive to the choice of hyperparameters, such as the learning rate, the number of fine-tuning steps, or the regularization techniques.

To address these challenges and limitations, researchers have proposed various methods and techniques to improve gradient-based fine-tuning, such as:

  • Using sparse or local attention to reduce the computation cost and memory consumption of fine-tuning large language models with long context sizes.
  • Learning trainable constraints or projection radii for each layer of the model to control the distance between the fine-tuned model and the pre-trained model.
  • Meta-learning dedicated meta-models or hypermodels to generate task-specific parameters or loss functions for the downstream model.
  • Customizing different learning rates or data augmentation strategies for each layer or sample of the model.

Large Language Model (LLM) Ecosystem Explained

The Large Language Model (LLM) ecosystem refers to the various commercial and open-source LLM providers, their offerings, and the tooling that helps accelerate their wide adoption. The functionality of LLMs can be segmented into five areas: Knowledge Answering, Translation, Text Generation, Response Generation, and Classification. There are many options to choose from for all types of language tasks.


LLM Ecosystem explained: Your ultimate Guide to AI | code_your_own_AI
Introduction to the world of LLM (Large Language Models) in April 2023. With detailed explanation of GPT-3.5, GPT-4, T5, Flan-T5 to LLama, Alpaca and KOALA LLM, plus dataset sources and configurations. Including ICL (in-context learning), adapter fine-tuning, PEFT LoRA and classical fine-tuning of LLM explained. When to choose what type of data set for what LLM job?

A comprehensive LLM /AI ecosystem is essential for the creation and implementation of sophisticated AI applications. It facilitates the efficient processing of large-scale data, the development of complex machine learning models, and the deployment of intelligent systems capable of performing complex tasks.

As the field of AI continues to evolve and expand, the importance of a well-integrated and cohesive AI ecosystem cannot be overstated.

A complete overview of today's LLM and how you can train them for your needs.