草庐IT

单个消费级GPU笔记本win电脑测试LLaMA模型

StringEast 2023-11-16 原文

1、LLaMa模型代码:

      GitHub - facebookresearch/llama: Inference code for LLaMA models

      不同模型对参数规模要求不同,有7B、13B、30B(33B)和65B四个数据规模。

ModelMP
7B1
13B2
30B(33B)4
65B8

2、环境检查

  (1)、检查CUDA环境是否已安装(没有的话先安装CUDA):

 (2)、检查是否已安装Pytorch(没有的话先安装Pytorch):

 

3、LLaMa模型下载:

  (1)、7B模型:

      nyanko7/LLaMA-7B at main (huggingface.co)

  (2)、13B模型:

      elinas/alpaca-13b-lora-int4 at main (huggingface.co)

  (3)、30B模型:

      elinas/llama-30b-int4 · Hugging Face

  (4)、65B模型:

      nyanko7/LLaMA-65B at main (huggingface.co)
  (5)、下载之前创建一个llama.cpp文件夹,在此文件夹创建一个models文件夹。

       将所下载的不同版本模型文件下载到models文件夹。文件应该按如下结构存放到刚刚建立的"Models“文件夹:

% ls ./models

7B

13B

30B

65B

llama.sh

tokenizer.model

tokenizer_checklist.chk

     (6)其它版本LLaMa下载:

      由于Meta官方最小的7B模型对显存和内存要求比较高。

       这里选择了一个量化版7B的小模型来测试。量化版7B小模型下载地址:

      GitHub - ggerganov/llama.cpp: Port of Facebook's LLaMA model in C/C++

4、  克隆项目并配置环境:

git clone https://github.com/facebookresearch/llama.git
cd llama
pip install -r requirements.txt
pip install -e


5、运行以下命令,将第一个Pth脚本转换为ggml.py格式: 

python convert-pth-to-ggml.py models/7B/ 1

      将在"7B”文件夹产生一个名为”models/7B/ggml-model-f16.bin"的文件。

 6、运行以下命令,将第二个脚本 "quantize"量化为4bit文件。

./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2

      将在"7B”文件夹产生一个名为”models/7B/ggml-model-q4_0.bin"的文件。

7、运行LLaMa模型:

      (1)使用Docker运行LLaMa模型。

      (2)使用WebUI运行LLaMA 模型。

      (3)使用以下方式运行LLaMa模型:

./main -m ./models/7B/ggml-model-q4_0.bin \
  -t 8 \
  -n 128 \
  -p 'The first man on the moon was '

        ./main--帮助显示[选项]。

          -m是模型。

          -t是要使用的线程数。

          -n是要生成的令牌数。

          -p是要输入的提示词。

 8、以下是完整的帮助输出:

         ./main[选项]

              选项:

                      -h、 --帮助显示此帮助消息并退出

                      -s SEED,--种子(默认值:-1)

                      -t N,--N个线程[计算期间要使用的线程数(默认值:4)]

                      -p PROMPT,--提示词

                        提示开始生成(默认值:随机)

                      -n n,--n_predict n个要预测的令牌数(默认值:128)

                      --top_k N top-k采样(默认值:40)

                     --top_p N top-p采样(默认值:0.9)

                     --temp N温度(默认值:0.8)

                     -b N,--batch_size N用于提示处理的批量大小(默认值:8)

                    -m FNAME,--模型的首个名称

                     模型路径(默认值:models/llama-7B/ggml model.bin)

 

9、实验结果:

 

 

 

10、能力表现对比:

(1) 常识推理:

          LLaMA-65B 比Chinchilla-70B和PaLM540B稍强。LLaMA-13B推理能力比GPT-3强。

(2) 闭卷问答:

           LLaMA-65B比GPT-3和Chinchilla具有竞争力。

(3) 阅读理解:

          LLaMA-13B比GPT-3稍强。

(4)数学推理:

         LLaMA65B优于Minerva-62B。

(5) 代码生成:

          LLaMA优于LaMDA和PaLM。

(6) 多任务语言理解:

          LLaMA-65B比Chinchilla70B和PaLM-540B稍逊。

(7) 训练能力进化:

         未知。

 参考:

1、GitHub - ggerganov/llama.cpp: Port of Facebook's LLaMA model in C/C++2、Running LLaMA 7B and 13B on a 64GB M2 MacBook Pro with llama.cpp | Simon Willison’s TILs

 

有关单个消费级GPU笔记本win电脑测试LLaMA模型的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  4. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  5. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  6. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  7. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  8. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  9. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  10. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

随机推荐