> 기술 주변기기 > 일체 포함 > ChatGPT는 'Little Alpaca'를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

ChatGPT는 'Little Alpaca'를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

PHPz
풀어 주다: 2023-04-12 20:34:01
앞으로
1739명이 탐색했습니다.

Meta가 "ChatGPT 오픈소스 버전" LLaMA를 출시한 이후 학계는 축제에 나섰습니다.

먼저 Stanford가 70억 매개변수 Alpaca를 제안한 후 UC Berkeley가 CMU, Stanford, UCSD 및 MBZUAI와 협력하여 130억 매개변수 Vicuna를 출시했습니다. 이는 90% 이상에서 ChatGPT 및 Bard와 비슷한 결과를 달성했습니다. 경우.

오늘 "Volume King" UC Berkeley LMSys org는 또 다른 70억 개의 매개변수 Vicuna를 출시했습니다. -

크기가 작고 효율성이 높으며 강력할 뿐만 아니라 M1/M2에서도 사용할 수 있습니다. 단 두 줄의 명령으로 칩의 Mac에서 실행하면 GPU 가속도 켤 수 있습니다!

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

프로젝트 주소: https://github.com/lm-sys/FastChat/#fine-tuning

오늘 Hugging Face의 연구원들은 70억 개의 매개변수 모델인 StackLLaMA도 출시했습니다. . 인간 피드백 강화 학습을 통해 LLaMA-7B를 미세 조정한 모델입니다.

Vicuna-7B: 실제로 단일 GPU, Mac에서도 실행 가능

모델 출시 후 일주일도 채 안 되어 UC Berkeley LMSys 조직에서는 Vicuna-13B의 무게를 발표했습니다.

그 중 단일 GPU 작업에는 약 28GB의 비디오 메모리가 필요한 반면, CPU만 사용하는 경우에는 약 60GB의 메모리가 필요합니다.

이번에 출시된 70억 매개변수 버전은 훨씬 작아서 수요가 절반으로 줄었습니다.

즉, 단일 GPU로 Vicuna-7B를 실행하려면 14GB 이상의 메모리만 필요하지만 순수 CPU로 실행하려면 30GB 이상의 메모리만 필요합니다.

그뿐만 아니라 Apple이 자체 개발한 칩이 탑재된 Mac이나 Metal 백엔드를 통해 AMD GPU에서도 GPU 가속을 활성화할 수 있습니다.

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

이전 13B 모델이 출시되었을 때 많은 네티즌들은 다음과 같은 불만을 토로했습니다.

단일 GPU인 줄 알았는데: 4090

실제 단일 GPU: 28GB 비디오 메모리 이상

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

이제 이 문제에 대한 새로운 솔루션이 있습니다. 즉, 8비트 압축을 사용하여 메모리 사용량을 약 절반으로 직접 줄이지만 모델 품질은 약간 저하됩니다.

13B 모델의 28GB 비디오 메모리는 즉시 14GB로 변경될 수 있습니다. 7B 모델의 14GB 비디오 메모리는 즉시 7GB로 변경될 수 있습니다. (그러나 활성화로 인해 실제 사용량은 이보다 높을 것입니다)

이와 관련하여 LMSys org의 연구원들은 메모리나 비디오 메모리가 부족할 경우 위 명령에 --load-를 추가할 수 있다고 말했습니다. 8비트 압축을 활성화하려면 8비트입니다.

그리고 CPU든 GPU든 Metal이든, 7B 모델이든 13B 모델이든 모두 적용 가능합니다.

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights --load-8bit
로그인 후 복사

StackLLaMA: 매우 완전한 RLHF 교육 튜토리얼

오늘 Hugging Face 연구원들은 블로그 StackLLaMA: RLHF를 통한 LLaMA 교육에 대한 실무 가이드를 게시했습니다.

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

현재의 대규모 언어 모델 ChatGPT, GPT-4 및 Claude는 모두 RLHF(인간 피드백을 통한 강화 학습)를 사용하여 모델 동작을 미세 조정하여 사용자 의도에 더 부합하는 응답을 생성합니다.

여기서 HF 연구원들은 다음 조합을 사용하여 RLHF를 사용하여 Stack Exchange의 모든 단계에 응답하도록 LlaMa 모델을 교육했습니다.

· SFT(감독 미세 조정)

· 奖励/偏好建模(RM)

· 人类反馈强化学习 (RLHF)

要注意了!

训练StackLLaMA的主要目标是提供一个教程和指南,介绍如何使用RLHF来训练模型,而不是主要关注模型的性能表现。

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

换句话说,该模型在生成答案方面非常滑稽,比如问它「我的花园里有一只骆驼,怎样才能把它赶走?」

StackLLaMA最后给出的一个总括「如果以上方法都不奏效,就要召集增援了。如果有不止一个人想抓住这个奇特的小家伙,为什么不召集一个团队呢?齐心协力,集中力量,这个问题应该很快就解决了」。

在进行RLHF时,最重要的是从一个强有力的模型开始。因为RLHF只是一个微调步骤,以便让模型与我们期望的互动方式和响应方式相一致。

当前,Meta开源的LLaMA模型参数大小从7B到65B不等,并且在1T到1.4T的token上进行了训练,是目前开源比较强大的模型。

因此,研究人员使用7B模型作为后续微调的基础。

在数据集选用上,研究人员使用了StackExchange数据集,包括所有的问题和答案(还有StackOverflow和其他主题)。

选用该数据集的好处是,答案伴随着点赞数和接受答案的标签一起给出。

研究人员根据A General Language Assistant as a Laboratory for Alignment论文中描述的方法,给每个答案打分:

score = log2 (1 + upvotes) rounded to the nearest integer, plus 1 if the questioner accepted the answer (we assign a score of −1 if the number of upvotes is negative).
로그인 후 복사


对于奖励模型,始终需要每个问题两个答案来进行比较。

而有些问题有几十个答案,导致可能存在许多的可选对。因此,研究者对每个问题最多采样十个答案对,以限制每个问题的数据点数。

最后,通过将HTML转换为Markdown来清除格式,使模型输出更可读。

训练策略

即使训练最小的LLaMA模型也需要大量的内存。通过计算7B 参数模型将使用(2+8)*7B=70GB 内存空间。当计算注意力分数等中间值时,可能需要更多。因此,即使在单个80GB的A100上也无法训练该模型。

一种方法是使用更高效的优化器和半精度训练,将更多信息压缩到内存中,但内存仍旧不够用。

另一种选择是使用参数高效微调(PEFT)技术,例如PEFT库,它可以在8位模型上执行低秩适应(LoRA)。

线性层的低秩适应: 在冻结层(蓝色)旁边添加额外参数(橙色),并将结果编码的隐藏状态与冻结层的隐藏状态相加。

以8位加载模型大大减少了内存占用,因为每个参数只需要一个字节的权重。比如,7B LLaMA在内存中是7 GB。

LoRA不直接训练原始权重,而是在一些特定的层 (通常是注意力层) 上添加小的适配器层,因此可训练参数的数量大大减少。

在这种情况下,一个经验法则是为每十亿参数分配约1.2-1.4GB的内存(取决于批次大小和序列长度),以适应整个微调设置。

这可以以较低成本微调更大的模型(在NVIDIA A100 80GB上训练高达50-60B规模的模型)。这些技术已经能够在消费级设备,比如树莓派、手机,和GoogleColab上对大型模型进行微调。

研究人员发现尽管现在可以把非常大的模型放入当个GPU中,但是训练可能仍然非常缓慢。

在此,研究人员使用了数据并行策略:将相同的训练设置复制到单个GPU中,并将不同的批次传递给每个GPU。

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

监督微调

在开始训练奖励模型并使用RL调整模型之前,若要模型在任何情况下遵循指令,便需要指令调优。

实现这一点最简单的方法是,使用来自领域或任务的文本继续训练语言模型。

为了有效地使用数据,研究者使用一种称为「packing」的技术:在文本之间使用一个EOS标记连接许多文本,并切割上下文大小的块以填充批次,而无需任何填充。

通过这种方法,训练效率更高,因为通过模型的每个token也进行了训练。

奖励建模和人类偏好

原则上,研究人员可以使用RLHF直接通过人工标注对模型进行微调。然而,这需要在每次优化迭代之后将一些样本发送给人类进行评级。

由于需要大量的训练样本来实现收敛,人类阅读和标注速度固有的延迟,不仅昂贵,还非常缓慢。

因此,研究人员在RL调整模型之前,在收集的人工标注上训练一个奖励模型。奖励建模的目的是模仿人类对文本的评价,这一方法比直接反馈更有效。

在实践中,最好的方法是预测两个示例的排名,奖励模型会根据提示X提供两个候选项,并且必须预测哪一个会被人类标注员评价更高。

通过StackExchange 数据集,研究人员根据分数推断出用户更喜欢这两个答案中的哪一个。有了这些信息和上面定义的损失,就可以修改transformers.Trainer 。通过添加一个自定义的损失函数进行训练。

class RewardTrainer(Trainer):def compute_loss(self, model, inputs, return_outputs=False):
rewards_j = model(input_ids=inputs["input_ids_j"],attention_mask=inputs["attention_mask_j"])[0]
rewards_k = model(input_ids=inputs["input_ids_k"], attention_mask=inputs["attention_mask_k"])[0]
loss = -nn.functional.logsigmoid(rewards_j - rewards_k).mean()
if return_outputs:
return loss, {"rewards_j": rewards_j, "rewards_k": rewards_k}
return loss
로그인 후 복사

研究人员利用100,000对候选子集,并在50,000对候选的支持集上进行评估。

训练通过Weights & Biases进行记录,在8-A100 GPU上花费了几个小时,模型最终的准确率为67%。

虽然这听起来分数不高,但是这个任务对于人类标注员来说也非常困难。

人类反馈强化学习

有了经过微调的语言模型和奖励模型,现在可以运行RL循环,大致分为以下三个步骤:

· 根据提示生成响应

· 根据奖励模型对回答进行评分

· 对评级进行强化学习策略优化

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시

在对查询和响应提示进行标记并传递给模型之前,模板如下。同样的模版也适用于SFT,RM 和RLHF阶段。

Question: <Query>
Answer: <Response>
로그인 후 복사

使用RL训练语言模型的一个常见问题是,模型可以通过生成完全胡言乱语来学习利用奖励模型,从而导致奖励模型得到不合实际的奖励。

为了平衡这一点,研究人员在奖励中增加了一个惩罚:保留一个没有训练的模型进行参考,并通过计算 KL散度将新模型的生成与参考模型的生成进行比较。

在训练期间对每个步骤进行批次奖励,模型的性能在大约1000个步骤后趋于稳定。

ChatGPT는 Little Alpaca를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시


위 내용은 ChatGPT는 'Little Alpaca'를 대체하며 Mac에서 실행할 수 있습니다! 단일 GPU를 위한 2줄의 코드, UC Berkeley, 또 다른 70억 매개변수 오픈 소스 모델 출시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿