跳转到主要内容

Python示例代码介绍(ft.Mistral-7b)

本文是关于在实践中使用大型语言模型(LLM)的更大系列文章的一部分。在上一篇文章中,我们看到了如何使用OpenAI对LLM进行微调。然而,这种方法的主要限制是,OpenAI的模型隐藏在其API后面,这限制了我们可以使用它们构建什么以及如何构建。在这里,我将讨论一种使用开源模型和QLoRA来微调LLM的替代方法。

微调是指我们采用现有的模型,并根据特定的用例对其进行调整。这是最近人工智能创新爆发的关键部分,催生了ChatGPT等。

尽管微调是一个简单(强大)的想法,但将其应用于LLM并不总是那么简单。关键的挑战是LLM在计算上(非常)昂贵(即它们不能在典型的笔记本电脑上进行训练)。

例如,70B参数模型的标准微调需要超过1TB的内存[1]。就上下文而言,A100 GPU具有高达80GB的内存,所以你(最多)需要十几张这样的20000美元的卡!

虽然这可能会让你构建自定义人工智能的梦想破灭,但现在还不要放弃。开源社区一直在努力使使用这些模型的建筑更容易访问。从这些努力中产生的一种流行方法是QLoRA(量化低秩自适应),这是一种在不牺牲性能的情况下微调模型的有效方法。

微调是指我们采用现有的模型,并根据特定的用例对其进行调整。这是最近人工智能创新爆发的关键部分,催生了ChatGPT等。

尽管微调是一个简单(强大)的想法,但将其应用于LLM并不总是那么简单。关键的挑战是LLM在计算上(非常)昂贵(即它们不能在典型的笔记本电脑上进行训练)。

例如,70B参数模型的标准微调需要超过1TB的内存[1]。就上下文而言,A100 GPU具有高达80GB的内存,所以你(最多)需要十几张这样的20000美元的卡!

虽然这可能会让你构建自定义人工智能的梦想破灭,但现在还不要放弃。开源社区一直在努力使使用这些模型的建筑更容易访问。从这些努力中产生的一种流行方法是QLoRA(量化低秩自适应),这是一种在不牺牲性能的情况下微调模型的有效方法。

https://youtu.be/XpoKB3usmKc

什么是量化?

QLoRA的一个关键部分是所谓的量化。虽然这听起来像是一个可怕而复杂的词,但这是一个简单的想法。当你听到“量化”的时候,想想把一系列的数字分成几个桶。

例如,0和100之间有无限个可能的数字,例如1、12、27、55.3、83.7823等等。我们可以根据整体将它们划分为桶来量化这个范围…

文章链接