赞
踩
UC伯克利学者联手CMU、斯坦福等,再次推出一个全新模型70亿/130亿参数的Vicuna,俗称「小羊驼」(骆马)。小羊驼号称能达到GPT-4的90%性能
s代码解读复制代码 $ conda create -n py310_chat python=3.10 # 创建新环境
$ source activate py310_chat # 激活环境
s
代码解读
复制代码 $ pip install fschat
s代码解读复制代码 $ git clone https://github.com/lm-sys/FastChat.git
$ cd FastChat
s代码解读复制代码 $ pip install --upgrade pip # enable PEP 660 support
$ pip install -e .
我们将 Vicuna Weights 作为 delta weights 发布,以符合LLaMA模型许可证。您可以将我们的delta添加到 原始 LLaMA Weights 中,以获得 Vicuna Weights 。说明:
注:权重v1.1 仅与 transformers>=4.28.0 和 fschat>=0.2.0 兼容。请相应地更新您的 本地package 。如果您按照上面的命令进行新的安装,那么您应该得到所有正确的版本。
当前版本的MiniGPT-4是建立在v0版本的 Vicuna-13B 之上的。请参考我们的说明来准备 Vicuna weights。最终的权重将在结构类似于以下的单个文件夹中:
注:Vicuna是一个开源的基于llama的LLM,其性能接近ChatGPT。我们目前使用的是v0版本的Vicuna-13B。
s代码解读复制代码 $ git lfs install
$ git clone https://huggingface.co/lmsys/vicuna-13b-delta-v1.1 # more powerful, need at least 24G gpu memory
$ # or
$ git clone https://huggingface.co/lmsys/vicuna-7b-delta-v1.1 # smaller, need 12G gpu memory
请注意,这不是直接的 working weight ,而是LLAMA-13B的 working weight 与 original weight 的差值。(由于LLAMA的规则,我们无法分配LLAMA的 weight 。)
然后,您需要按照HuggingFace提供的原始权重 或 从互联网上获取 HuggingFace格式的原始LLAMA-7B或LLAMA-13B 权重。
注:这里 直接 从 HuggingFace 下载 已转化为 HuggingFace格式的原始LLAMA-7B或LLAMA-13B 权重
s代码解读复制代码 $ git lfs install
$ git clone https://huggingface.co/decapoda-research/llama-13b-hf # more powerful, need at least 24G gpu memory
$ # or
$ git clone https://huggingface.co/decapoda-research/llama-7b-hf # smaller, need 12G gpu memory
当这两个 weight 备好后,我们可以使用Vicuna团队的工具来创建真正的 working weight 。
执行如下命令创建最终 working weight
s代码解读复制代码 $ python -m fastchat.model.apply_delta --base /path/to/llama-13bOR7b-hf/ --target /path/to/save/working/vicuna/weight/ --delta /path/to/vicuna-13bOR7b-delta-v1.1/ --low-cpu-mem
>>>
The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization.
The tokenizer class you load from this checkpoint is 'LLaMATokenizer'.
The class this function is called from is 'LlamaTokenizer'.
Split files for the base model to /tmp/tmptu2g17_d
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 33/33 [01:47<00:00, 3.26s/it]
Split files for the delta model to /tmp/tmpol8jc2oy
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [01:03<00:00, 31.92s/it]
Applying the delta
33it [02:09, 3.91s/it]
Saving the target model to vicuna/weight/
注:低CPU内存需加入–low-cpu-mem,可以把大的权重文件分割成多个小份,并使用磁盘作为临时存储。可以使峰值内存保持在16GB以下。不然无法载入vicuna增量文件,CPU内存占满,程序直接被kill,
output
s代码解读复制代码config.json pytorch_model-16.bin pytorch_model-23.bin pytorch_model-30.bin pytorch_model-8.bin
pytorch_model-0.bin pytorch_model-17.bin pytorch_model-24.bin pytorch_model-31.bin pytorch_model-9.bin
pytorch_model-10.bin pytorch_model-18.bin pytorch_model-25.bin pytorch_model-32.bin pytorch_model.bin.index.json
pytorch_model-11.bin pytorch_model-19.bin pytorch_model-26.bin pytorch_model-3.bin special_tokens_map.json
pytorch_model-12.bin pytorch_model-1.bin pytorch_model-27.bin pytorch_model-4.bin tokenizer_config.json
pytorch_model-13.bin pytorch_model-20.bin pytorch_model-28.bin pytorch_model-5.bin tokenizer.model
pytorch_model-14.bin pytorch_model-21.bin pytorch_model-29.bin pytorch_model-6.bin
pytorch_model-15.bin pytorch_model-22.bin pytorch_model-2.bin pytorch_model-7.bin
参考:
s
代码解读
复制代码 $ python -m fastchat.model.apply_delta --base /mnt/kaimo/data/chat/llama-7b-hf/ --target /mnt/kaimo/data/chat/vicuna/weight/ --delta /mnt/kaimo/data/chat/vicuna-7b-delta-v0/ --low-cpu-mem
bug:tensor尺度不一致
RuntimeError: The size of tensor a (32000) must match the size of tensor b (32001) at non-singleton dimension 0
当使用v0版本时,生成vicuna权重出错(bug:tensor尺度不一致),而换为v1.1版本即可解决。
注:(实验功能:您可以指定–style rich,以便为某些非ASCII内容提供富格文本输出和更好的文本流质量。这在某些终端上可能无法正常工作。)
python代码解读复制代码init_kwargs {'torch_dtype': torch.float16} Loading checkpoint shards: 100%| | 33/33 [00:41<00:00, 1.24s/it] USER: Implement a Python function to compute fibonacci numbers ASSISTANT: Here is an implementation of a function `fibonacci` that computes the nth Fibonacci number: def fibonacci(n): """ Compute the nth Fibonacci number using the recurrence relation F(n) = F(n-1) + F(n-2) """ if n < 0 or n > 1: raise ValueError("n must be a positive integer") if n == 0: return 0 if n == 1: return 1 result = fibonacci(n-1) + fibonacci(n-2) return result
下面的命令要求Vicuna-13B大约有28GB的GPU内存,Vicuna-7B大约有14GB的GPU存储器。如果内存不足,请参阅下面的“内存不足”部分。
shell
代码解读
复制代码 $ python -m fastchat.serve.cli --model-path /path/to/vicuna/weights
s代码解读复制代码usage: cli.py [-h]
[--model-path MODEL_PATH] Vicuna Weights 路径
[--device {cpu,cuda,mps}] 选择 使用 cpu or cuda 运行
[--gpus GPUS] 选择 使用 gpu 型号
[--num-gpus NUM_GPUS] 选择 gpu 数量
[--max-gpu-memory MAX_GPU_MEMORY]
[--load-8bit] 8bit 量化,用于降低显存
[--conv-template CONV_TEMPLATE]
[--temperature TEMPERATURE]
[--max-new-tokens MAX_NEW_TOKENS]
[--style {simple,rich}]
[--debug]
You can use model parallelism to aggregate GPU memory from multiple GPUs on the same machine.
shell
代码解读
复制代码 python -m fastchat.serve.cli --model-path /path/to/vicuna/weights --num-gpus 2
这只在CPU上运行,不需要GPU。Vicuna-13B需要大约60GB的CPU内存,Vicuna-7B需要大约30GB的CPU存储器。
shell
代码解读
复制代码 $ python -m fastchat.serve.cli --model-path /path/to/vicuna/weights --device cpu
如果内存不足,可以通过在上面的命令中添加 --load-8bit 来启用 8位压缩。这可以将内存使用量减少约一半,同时略微降低模型质量。它与CPU、GPU和Metal后端兼容。具有8位压缩的Vicuna-13B可以在单个NVIDIA 3090/4080/V100(16GB)GPU上运行。
s
代码解读
复制代码 $ python -m fastchat.serve.cli --model-path /path/to/vicuna/weights --load-8bit
shell
代码解读
复制代码 $ python -m fastchat.serve.cli --model-path /path/to/vicuna/weights
出现以下问题:
将 FastChat/fastchat/model/model_adapter.py 里面 的
s代码解读复制代码 tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=self.use_fast_tokenizer
model = AutoModelForCausalLM.from_pretrained(...)
使用文本替换,将所有的
重新运行即可
要使用web UI提供服务,您需要三个主要组件:与用户接口的web服务器、托管一个或多个模型的模型工作者,以及协调web服务器和模型工作者的控制器。以下是您的终端中要遵循的命令:
s
代码解读
复制代码 $ python -m fastchat.serve.controller
此控制器管理分布式工作程序。
s
代码解读
复制代码 $ python -m fastchat.serve.model_worker --model-path /path/to/vicuna/weights
等待流程完成加载模型,然后看到“Uvicorn running on …”。
您可以启动多个模型工作程序来同时为多个模型提供服务。模型工人将自动连接到控制器。
要确保模型工作者正确连接到控制器,请使用以下命令发送测试消息:
s
代码解读
复制代码 $ python3 -m fastchat.serve.test_message --model-name vicuna-13b
s
代码解读
复制代码 $ python -m fastchat.serve.gradio_web_server
这是用户将与之交互的用户界面。
通过以下步骤,您将能够使用web UI为您的模型提供服务。您现在可以打开浏览器并与模特聊天了。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
大模型AGI学习包
资料目录
《人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取!
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
3.LLM
大家最喜欢也是最关心的LLM(大语言模型)
《人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。