LLM相关的一些调研

news2024/12/26 14:44:32

Prompt Engine

  • 可以参考该项目,该项目提供关于提示词书写的规则。由openai以及吴恩达完成。
    https://github.com/datawhalechina/prompt-engineering-for-developers
  • 由于目前chatgpt 无法直接在国内访问,推荐在claude on slack上尝试。
  • 关于claude api
    https://learn.microsoft.com/en-us/azure/cognitive-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions#specifying-the-output-structure

大模型的涌现能力

https://mp.weixin.qq.com/s/L_dOMtbfhv4SdA_nBaiIog

Finetine

  • LoRA
    https://mp.weixin.qq.com/s/5uFIGw7TBHJA_Q26REG4OA
  • https://github.com/Facico/Chinese-Vicuna/tree/master
  • https://github.com/Instruction-Tuning-with-GPT-4/GPT-4-LLM
  • https://github.com/OptimalScale/LMFlow
  • https://github.com/LC1332/Luotuo-Chinese-LLM#quickstart
  • https://github.com/lm-sys/FastChat
  • https://github.com/facebookresearch/llama
  • https://github.com/tatsu-lab/stanford_alpaca

Deployment

https://github.com/THUDM/ChatGLM-6B

jittor

https://github.com/Jittor/JittorLLMs

Langchain

https://www.bilibili.com/video/BV1GL411e7K4/?spm_id_from=333.999.0.0&vd_source=390ba7830cbb1bbb68ee1b96cfd3f787
https://github.com/hwchase17/langchain

Llama-index

https://github.com/jerryjliu/llama_index

MNN

  • https://github.com/wangzhaode/ChatGLM-MNN

  • https://github.com/IST-DASLab/gptq

  • https://github.com/ggerganov/llama.cpp

  • https://github.com/ymcui/Chinese-LLaMA-Alpaca

  • https://github.com/MegEngine/InferLLM

  • https://github.com/qwopqwop200/GPTQ-for-LLaMa

  • https://github.com/tpoisonooo/llama.onnx

Q&A

  • instruction数据
    从Chinese-Vicuna 提到的使用了数据集GuanacoDataset 可以大概看出来这种格式
    在这里插入图片描述

本地使用InferLLM 项目去推理模型

  • 总体比较简洁,可以直接查看官方readme
    https://github.com/MegEngine/InferLLM/blob/main/README_Chinese.md
#指定模型文件,指定使用的线程数量
./alpaca -m ../models/chinese-alpaca-7b-q4.bin -t 8

在这里插入图片描述

  • 资源消耗
    在这里插入图片描述

使用llama.cpp部署

  • 安装openblas
git clone https://github.com/xianyi/OpenBLAS
cd OpenBLAS/
mkdir build
cd build/
cmake ../
cmake --build ./ -j8
cmake --install ./
  • 编译llama.cpp
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
mkdir build
cd build
cmake .. -DLLAMA_OPENBLAS=ON
cmake --build . --config Release


#使用intel mkl加速
mkdir build
cd build
cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=Intel10_64lp -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx
cmake --build . -config Release

https://github.com/ggerganov/llama.cpp

  • 推理模型Chinese-LLaMA-Alpaca
    https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/llama.cpp%E9%87%8F%E5%8C%96%E9%83%A8%E7%BD%B2
  • 原始llama模型下载 https://zhuanlan.zhihu.com/p/614118339
    • 合并模型 https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/%E6%89%8B%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%90%88%E5%B9%B6%E4%B8%8E%E8%BD%AC%E6%8D%A2
python ~/anaconda3/envs/chinese_llama_alpaca/lib/python3.10/site-packages/transformers/models/llama/convert_llama_weights_to_hf.py --input_dir ~/workspace/pyllama_data/  --model_size 7B --output_dir ~/workspace/llama_7B_hf

# 注意添加手动绝对路径
python scripts/merge_llama_with_chinese_lora.py --base_model /home/kjs-server/workspace/llama_7B_hf --lora_model /home/kjs-server/workspace/chinese_llama_plus_lora_7b,/home/kjs-server/workspace/chinese_alpaca_plus_lora_7b --output_type pth --output_dir ~/workspace/merge_dir
  • 模型量化
    https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/llama.cpp%E9%87%8F%E5%8C%96%E9%83%A8%E7%BD%B2
  • 执行模型推理
./main -m ../../models/ggml-model-f16.bin \
       --color \
       -f ../../prompts/alpaca.txt \
       --ctx_size 2048 \
       -n -1 \
       -ins -b 256 \
       --top_k 10000 \
       --temp 0.2 \
       --repeat_penalty 1.1 \
       -t 96

MNN推理chatglm-6B

  • 下载相关的项目,编译完成,参考项目readme
    https://github.com/wangzhaode/ChatGLM-MNN/blob/master/README.md
  • 模型下载
# 切换到指定目录
cd ChatGLM-MNN/resource/models
# 不使用代理,直接下载
./download_models.sh int4
  • 执行demo程序
./cli_demo -d int4
  • 目前运行存在问题, Segmentation fault -> 待解决(rk3588)
    在这里插入图片描述

  • 最终还是在一台x86PC上面完成模型的部署,分别在CPU和GPU上面的推理速度

  • CPU

    • Intel® Xeon® Platinum 8160 CPU @ 2.10GHz
    • 启动时间 ~30s,速度2 s/token per
  • GPU

    • NVIDIA GeForce RTX 3090
    • 启动时间,无明显的延迟, 速度

JittorLLMs

  • 该项目目前不是一个聊天机器人的应用
  • 在CPU在同样存在速度比较慢,GPU上面速度比较快。

关于其中配置参数的理解

在这里插入图片描述
dimension
n heads
n layers
learning rate
batch size
n tokens

benchmark

https://github.com/SJTU-LIT/ceval/blob/main/README_zh.md
https://mp.weixin.qq.com/s/P0ohd5DpwJOkL8DFVC4qoA

APP

https://github.com/csunny/DB-GPT/tree/main
https://github.com/OptimalScale/DetGPT
https://github.com/oobabooga/text-generation-webui

transformer

  • https://blog.csdn.net/yujianmin1990/article/details/85221271

LLM推理中的参数理解

  • Top-p:模型只考虑总概率分布的前 p% 的 token,并从这些 token 中生成输出。这可以确保模型不会过于依赖高概率的 token。
  • Top-k:模型只考虑概率最高的前 k 个 token,并从这些 token 中生成输出。这也可以提高模型输出的多样性。

transformer 模型的解码主要有以下几种方式:1. Greedy search:每次只选取概率最高的token作为输出,然后继续解码。优点是效率高,缺点是无法生成较长且质量高的序列。常用于实时场景。2. Beam search:每次考虑前K个最可能的token,选取其中概率最高的一个作为输出,然后继续解码。相比greedy search,可以生成更长更高质量的序列,但计算成本也更高。在transformer中很常用。3. Sampling:根据token的概率分布随机采样一个token作为输出。可以增强输出的多样性,缺点是序列的连贯性较差。4. Top-K/Top-P sampling:在采样时只考虑概率最高的前K个或总概率分布的前P%的token,然后在这些token中采样。相比于常规sampling,可以提高序列的连贯性。5. Beam sampling:先使用beam search生成多个候选序列,然后从中随机采样一个序列作为最终输出。集beam search和sampling的优点,既可以生成较长高质量的序列,又可以增强输出的多样性。6. Nucleus sampling:类似于Top-P sampling,但会对高概率的token施加更高的采样概率,低概率的token采样概率更低。可以看作是Top-P采样和常规采样的结合。除了上述几种标准化解码方式,许多研究工作也会基于这些方式提出新的变体,以期取得更好的效果。综上,解码方式的选择主要根据实际任务的需求来确定,需要在生成序列的质量、多样性和计算成本之间进行权衡。对于高质量长序列的生成,Beam Search是比较常用的方式。而在需要实时响应或强调输出多样性的任务中,Sampling相关的方法会更合适

使用webui 运行llama.cpp

  • 运行chinese-alpaca-7B 16bit cpu(x86)
#激活虚拟环境
conda activate textgen
cd ~/workspace/oobabooga_linux/text-generation-webui
python server.py
  • 推理速度 -> 还是需要一个GPU来完成推理
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode:1035. 不相交的线、53. 最大子数组和(C++)

目录 1035. 不相交的线 题目描述: 实现代码与解析: 动态规划 原理解析: 53. 最大子数组和 题目描述: 实现代码与解析: 动态规划 原理思路: 1035. 不相交的线 题目描述: 在两条独立的水…

移动端永不过时的高薪技术岗位,原来是它……

随着 Android 设备的普及和应用领域的不断扩大,Android Framework 开发需求量将会持续增长,并且会越来越多地向行业、企业级应用和系统优化等方向发展。以下是一些 Android Framework 开发相关的应用场景: 1. 特定垂直领域的智能设备&#x…

Jmeter性能测试

一、jmeter多并发 1.线程设置: 线程数——多少个虚拟用户 ramp_up时间(秒)——时间,设置时间内将线程都跑完 循环次数——勾选永远,就一直跑,直到手动停止;输入数字,就是循环多少次 2.jmeter逻辑分支控制…

关于MySQL性能优化方案,掌握这一篇就够了!

目录 前言 一、设置索引 1、索引的优缺点: 2、给表列创建索引 3、查看索引 4、删除索引: 5、索引原理: 二、分类讨论 三、针对偶尔很慢的情况 1、 数据库在刷新脏页(flush) 2. 拿不到锁我能怎么办 四、针对一直都这…

力扣题库刷题笔记16--最接近的三数之和

1、题目如下: 2、个人Python代码实现 本题的思路应该与很早之前刷的第15题三数之和是一个思路: 1、先将数组排序,然后进行遍历数组 2、确定左指针、右指针 3、判断三个数之和是否接近目标值 4、重点是,为确保左右指针不是同一个元…

Transformer回归预测

一、Attention is all you need——李沐论文精读Transformer 论文地址: https://arxiv.org/pdf/1706.03762.pdf Transformer论文逐段精读【论文精读】 卷积神经网络对较长的序列难以建模,因为他每次看一个比较小的窗口,如果两个像素隔得比较…

6.STM32时钟系统

1.时钟系统框图: HSI:高速的内部时钟->8MHz;HSE:外部高速时钟->8MHz;PLL: 锁相环->用于倍频(放大频率);CSS:时钟监控系统(一旦检测到HSE(外部晶振)失败,将会自动切换系统时钟源HSI);LS…

高等数学函数的性质

(本文内容为个人笔记分享) 牛顿二项公式 ( x y ) n ∑ k 0 n C n k ⋅ x n − k y k (xy)^n\stackrel{n}{\sum\limits_{k0}}C^k_n\sdot x^{n-k}y^k (xy)nk0∑​n​Cnk​⋅xn−kyk. 映射 f : X → Y f:X\rightarrow Y f:X→Y, f f f 为 …

成功解决RuntimeError:Unable to find a valid cuDNN algorithm to run convolution

该错误有可能是由于GPU不足导致的 有两种解决方法: 方法一:指定device 在指定device时,没有指定具体的卡 只用了如下代码 device torch.device("cuda" if torch.cuda.is_available() else "cpu")默认使用了index0的卡&#xff0…

CppUTest——【由JUnit移植过来的】C++单元测试框架——的下载安装

C单元测试框架CppUTest的下载与安装 简介下载地址单元测试框架下载单元测试被测工程下载 安装安装Cygwin下载地址安装步骤手动安装CMake 编译单元测试框架CppUTest 导入到Virtual Studio准备条件根据VS版本选择导入对应的.sln文件 简介 CppUnit是【由JUnit移植过来的】C测试框…

每日一练 | 华为认证真题练习Day65

1、如果一个以太网数据帧的Length/Type0x8100,那么这个数据帧的载荷不可能是?(多选) A. ARP应答报文 B. OSPF报文 C. RSTP数据帧 D. STP数据帧 2、路由器某接口配置信息如下,则此端口可以接收携带哪个VLAN的数据包…

《C++ Primer》--学习8

vector 对象是如何增长的 当不得不获取新的内存空间时,vector 和 string 的实现通常会分配比新的空间需求更大的内存空间,容器预留这些空间作为备用,这样就不用每次添加新元素都重新分配容器的内存空间了 管理容器的成员函数 capacity 和 …

高速电路设计系列分享-带宽和动态范围

目录 概要 整体架构流程 技术名词解释 1.带宽 2.动态范围 小结 概要 提示:这里可以添加技术概要 本文继续熟悉一些基本概念。 在许多技术领域,我们习惯于把技术进步与更高的速率关联起来:从以太网到无线局域网再到蜂窝移动网络,数据通信的实质就是不断…

MySQL8.0(Win)的安装步骤

MySQL8.0(Win)的安装步骤 MySql8.0 安装网址MySql8.0 安装界面界面一界面二界面三界面四界面五界面六界面七界面八界面十界面十一 查看 MySql8.0 安装结果配置MySql8.0的环境变量Path使用命令行访问MySQL的安装结果使用命令行操作MySQL数据库显示MySQL中…

Fiddler 简单抓包

文章目录 一、Fiddler 简介二、下载 Fiddler三、功能介绍1、Filters2、Inspectors3、Automatic BreakPoints4、TextWizard5、其他常用功能 一、Fiddler 简介 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设…

计算机由于找不到msvcr120.dll无法执行代码的解决方法分享

运行软件程序或游戏的时候,计算机提示由于找不到msvcr120.dll无法执行代码是怎么回事呢?msvcr120.dll是Microsoft Visual C的一部分,用于在Windows操作系统上运行C应用程序。它是一个动态链接库文件,包含了许多C运行时库&#xff…

【日志1】rsyslog,logrotate,post_code,journalctl

文章目录 1.rsyslog:rsyslogd一个进程 ,管理每个进程发来的log并往/var/log里写,syslog函数将log写给rsyslogd进程,rsyslogd -v2.logrotate:logrotate /etc/logrotate.rsyslog(bb中重命名)3.pos…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 26 日论文合集)

文章目录 一、检测相关(4篇)1.1 Bridging the Performance Gap between DETR and R-CNN for Graphical Object Detection in Document Images1.2 Cascade Subspace Clustering for Outlier Detection1.3 Lesion Detection on Leaves using Class Activation Maps1.4 Deep Omni-…

UI还不错的视频播放器:GOMPlayerPlus

之前给各位小伙伴们测试过一款叫【完美解码】开源的播放器,今天给各位同学测试了一款小编认为不错的UI视频播放器,大家也可以测试学习下,顺便也可以对比下看看是【完美解码】好用还是【GOMPlayerPlus】好用。 一、简单介绍 这款影音播放器是…

Git Bash介绍

Git Bash介绍 Git是一个版本控制工具,而Git Bash是在Windows系统中运行Git命令的命令行界面工具。您可以使用Git Bash来管理和操作Git仓库。当你在Windows系统上安装Git时,它会默认安装Git Bash。 Git Bash是git(版本管理器)中提供的一个命令行工具&am…