LLM-大语言模型相关

LLM:大语言模型相关

环境准备

1
2
## 安装anaconda
$  winget install Anaconda.Anaconda3

hf-mirror: hugging-faces镜像网站

hfd: 大模型数据下载工具

1
2
3
4
5
## 安装
$ wget 

## 用法
$ hfd.sh jartine/llava-v1.5-7B-GGUF  --include "llava-v1.5-7b-q4.llamafile"

概念

GGML:

  • GGML(全称: Georgi Gerganov Machine Learning): 由Georgi Gerganov用C写的一个大语言张量库(tensor library);
  • GGML定义了一个LLM文件的格式;
  • GGML让大模型在消费级硬件上产生高性能;
  • GGML主要技术:
    • 量化技术: 将原有大模型FP16精度压缩成INT8、INT6精度;
    • 二进制文件编码: 遵从这种二进制格式文件和量化方式的库都可以直接载入这个模型使用;

GGUF:

  • GGUF(全称:GPT-Generated Unified Format): Georgi Gerganov2023年创建的新LLM文件格式;
  • GGUF包含加载模型所需的所有信息,无需依赖外部文件;
  • GGUF采用的技术:
    • 紧凑的二进制编码格式
    • 优化的数据结构: 为快速访问和加载模型数据提供了支持;
    • 内存映射(mmap): 允许直接从磁盘映射数据到内存地址空间,从而加快了数据的加载速度;
    • 高效的序列化和反序列化:

ONNX: 开放神经网络交换格式

  • onnx: Open Neural Network Exchange,是一种模型IR,用于在各种深度学习训练和推理框架转换的一个中间表示格式。
  • 用protobuf定义;
  • ONNX 模型结构:
    • ModelProto
      • GraphProto
        • NodeProto
        • ValueInfoProto

Prompt

prompt: 提示词, 是用于引导大模型进行文本生成的开头部分, 为大模型的文本生成提供语境.

Agent

LangChain

RAG

  • RAG(Retraivel 搜索增强生成). 利用向量数据库或图数据库等来

LLaVA: Large Language and Visual Assistant

框架

LLM工具

llama-cli

ollama: 命令行运行llm工具

  • 支持平台: mac, linux, windows
  • 开发语言: golang
1
2
3
4
5
6
7
8
## 创建模型配置文件
$ cat "FROM d:\code\llm\<LLM_MODEL_GGUF>" > modelfile.txt
## ollama导入模型
$ ollama create <MODLE_NAME> -f modelfile.txt
## 查看ollama导入的模型
$ ollama list
## 运行模型
$ ollama run <MODLE_IMPORT_NAME>

llamafile: 单文件大模型运行工具

  • 由moliza开源的单文件运行llm工具;
  • 支持加载llm model完成推理, 提供本地http服务;
  • 也可以支持直接将大模型集成的单文件运行模式;
  • 提供了类 openai api;
  • 开发语言: c
  • 支持平台: mac, linux, win
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## 1.下载llamafile命令行命令
$ wget -O /c/app/llamafile.exe https://github.com/Mozilla-Ocho/llamafile/releases/download/0.7/llamafile-0.7

## 加载model
$ llamafile -m /c/model/qwen1_5-14b-chat-q4_0.gguf -ngl 999
## 启动浏览器: http://127.0.0.1:8080

## 加载ollama model
$ llamafile -m ~/.ollama/models/blobs/sha256-xxxxxx -ngl 9999

## 制作单.llamafile文件

gpt4all

lm-studio

AnythingLLM

应用

Chat: 文本对话

语音识别

whisper.cpp

  • 基于whispe.cpp语音对话模型;
  • windows下wsl编译
1
2
3
4
5
6
7
8
$ git clone  git@github.com:ggerganov/whisper.cpp.git
$ cd whisper.cpp
## 编译talk-llama
$ make talk-llama
## 下载ggml语音模型
$ models/download-ggml-model.sh small
## 运行
$ ./talk-llama -mw /mnt/c/code/llm/whisper-models/ggml-whisper-small.bin -ml /mnt/c/code/llm/lmstudio/Qwen/Qwen1.5-0.5B-Chat-GGUF/qwen1_5-7b-chat-q4_0.gguf -p "Jack" -t 8 -l zh

TTS: 文本转语音

图片生成

  • diffusers-rs: diffuse的rust版本实现
1
2
3
4
5
6
7
8
### 下载源码
$ git clone git@github.com:LaurentMazare/diffusers-rs.git
### 进入源码目录 
$ cd diffuser-rs
### 下载模型权重数据
$ python3 ./scripts/get_weights.py
### 运行文生图
$ cargo run --example stable-diffusion --features clap -- --prompt "A robot holding a fire torch."

2d转3d

知识系统

平台

Nvidia

CUDA

AMD

ZLUDA

  • zluda: 是无修改直接在amd gpu上运行cuda程序的cuda兼容库;
1
2
3
4
## download and install
$ wget https://github.com/vosen/ZLUDA/releases/download/v3/zluda-3-windows.zip
## run with zlud
$ <ZLUDA_DIRECTORY>\zluda.exe -- <APPLICATION> <APPLICATION_ARGUMENTS>
  • olive
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
## 1. 创建虚拟环境
$ conda create --name=llama2_opt python=3.11.5
## 2. 激活虚拟环境
$ conda active llama2_opt
## 下载olive源码
$ git clone https://github.com/microsoft/Olive.git
## 安装依赖包
$ pip install -r ./requirements.txt
## 
$ pip install -e .

参考

  1. 从零实现 Llama3 模型
  2. https://www.deepin.org/zh/llamafile-a-must-have-tool/
  3. https://www.cvmart.net/community/detail/6550
  4. https://zhuanlan.zhihu.com/p/686886176
  5. https://lilianweng.github.io/posts/2023-06-23-agent/
  6. https://www.datalearner.com/blog/1051705715975975
  7. GGUF大模型文件格式简介
  8. https://gitcode.com/ggerganov/ggml/overview?utm_source=artical_gitcode
  9. https://www.bingal.com/posts/ai-llamafile-usage/