因為一般電腦的顯示卡VRAM有限,所以必須透過LLaMa.cpp才有辦法執行。
這邊會進行流程教學如果有問題可以留言詢問。
在win11設定wsl並安裝Ubuntu的最新版
先以系統管理員身分開啟cmd
`wsl --install `
安裝完成後要設定自己的帳號及密碼
其他環境安裝方式請參考(包含Python3):
https://hackmd.io/@1NYc5rnGTZarfiWK6XaJZA/ryULq34j0
安裝完再繼續下一步
---
1. 安裝依賴項
首先,你需要安裝一些必要的依賴項。一般來說,你需要在你的系統上安裝 C++ 編譯器和 CMake。
```
sudo apt-get update
sudo apt-get install build-essential cmake
```
df -h
2. clone llama.cpp 的 GitHub 儲存庫
你需要從 GitHub 下載 llama.cpp 的代碼:
```
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp`
mkdir build
cd build
cmake ..
make
```
3. Download LLAMa 模型權重
因為llama.cpp裡轉換程式需要的東西,如果從llama官網下載的話會沒有辦法運行,所以要透過Hugging face來下載預訓練的模型(除非轉換程式你有辦法自己改)。
```
流程:
1.註冊: https://huggingface.co/
2.申請模型:https://huggingface.co/meta-llama/Llama-2-7b-hf
(要等待審核,當然也可以用其他模型這邊只是範例)
3.進入你的個人頁面申請 Access Tokens
(別關掉等等會用到)
```
我是使用Python來完成模型下載的工作:
```
touch my_script.py
code .
```
然後因為我有安裝VScode所以他會自己開啟
接著修改剛剛創建的my_script.py 把下面的程式修改進去
(這邊不能照抄,因為每個人的下載token不一樣,api_token要改成自己的)
```
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "meta-llama/Llama-2-7b-hf" #你要的模型
api_token = " " #這邊要放入你的access token
cache_dir = "/home/esslab/llama2_cache" #你要的路徑(這邊是我的路徑)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
offload_folder="offload",
offload_state_dict=True,
token=api_token,
cache_dir=cache_dir
)
tokenizer = AutoTokenizer.from_pretrained(
model_name,
cache_dir=cache_dir,
token=api_token
)
```
如果有問題的話下載的過程會被killed這時候你要載回去檢查前面是否有問題!
4. 轉換模型權重(因為原本的模型是無法運行的)
首先你要cd進入你的llama.cpp的資料夾
輸入ls -a 看一下是否有下面指令的檔案
有的話才可以進行轉換,後面的是程式的路徑(要花時間找一下)
可以使用find指令去尋找有config.json的那個資料夾。
```
python3 convert_hf_to_gguf.py ~/.cache/huggingface/hub/models--meta-llama--Meta-Llama-3.1-8B/snapshots/48d6d0fc4e02fb1269b36940650a1b7233035cbb
```
如果可以成功進行轉換的話,可以進入下一步
(這邊先不教怎麼使用量化)
5.開始進行推論(這邊的語法也不能直接照抄)
-m後面是代表你轉換過後程式的路徑
" "內是你想要問的問題
```
./llama-cli -m /home/esslab/llama2_cache/models--meta-llama--Llama-2-7b-hf/snapshots
/01c7f73d771dfac7d292323805ebc428287df4f9/Llama-2-7B-hf-F16.gguf -p "Hello"
```
6.結果(沒有使用GPU的話會超級慢)
1個token要30秒

---
---
7.安裝CUDA
这个错误表明你在安装 `llama-cpp-python` 时遇到了问题,特别是在启用 CUDA 的情况下。具体来看,问题出在找不到 `nvcc`(CUDA编译器),这表明CUDA环境没有正确配置。
### 解决方案
#### 1. 确保CUDA已正确安装
如果你打算启用CUDA支持,需要确保系统上已经安装了CUDA工具包,并且设置了 `CUDAToolkit_ROOT` 环境变量。
可以通过以下步骤检查和设置:
```bash
# 检查nvcc是否已安装
which nvcc
# 如果没有安装,请安装CUDA工具包
# 例如,对于Ubuntu,你可以使用以下命令安装CUDA:
sudo apt-get install nvidia-cuda-toolkit
```
安装完成后,你需要设置环境变量:
```bash
export CUDAToolkit_ROOT=/usr/local/cuda
export PATH=$CUDAToolkit_ROOT/bin:$PATH
```
然后重新尝试安装 `llama-cpp-python`:
```bash
CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python
```
### 總結
- **啟用CUDA**:如果你需要CUDA支持,确保CUDA工具包已正确安装并配置。
- **禁用CUDA**:如果你不需要CUDA支持,直接安装没有CUDA的版本。
-
#### 1. 安装 OpenBLAS 开发库
在Ubuntu系统上,你可以通过以下命令安装 `OpenBLAS` 和相关的开发库:
```bash
sudo apt-get update
sudo apt-get install libopenblas-dev liblapack-dev
```
#### 2. 安装 `pkg-config`
编译器还提示缺少 `pkg-config` 工具。这个工具用于管理库的路径和编译标志。
你可以通过以下命令安装 `pkg-config`:
```bash
sudo apt-get install pkg-config
```
#### 3. 重新编译 `llama.cpp`
安装完上述库后,重新编译 `llama.cpp`:
```bash
make GGML_OPENBLAS=1
```
### 解释
- **libopenblas-dev**:包含 `OpenBLAS` 的头文件和库文件,提供了 `cblas.h`。
- **liblapack-dev**:提供了 `LAPACK` 库的头文件和库文件。
- **pkg-config**:帮助编译器找到库的路径。
```bash
export CUDA_DOCKER_ARCH=compute_75
make GGML_CUDA=1
```
---
---
8.量化
(https://huggingface.co/docs/transformers/main/en/main_classes/quantization#offload-between-cpu-and-gpu)
先用ls -a尋找是否有llama-quantize這個程式
一樣是語法/路徑/路徑/量化方式
```
./llama-quantize ~/llama2_cache/models--meta-llama--Llama-2-7b-hf/snapshots/01c7f73d771dfac7d292323805ebc428287df4f9/Llama-2-7B-hf-F16.gguf ~/llama2_cache/models--meta-llama--Llama-2-7b-hf/snapshots/01c7f73d771dfac7d292323805ebc428287df4f9/Llama-2-7B-hf-F16-q4.gguf q4_0
```
q2_k:特定張量 (Tensor) 采用較高的精度設置,而其他的則保持基礎級別。
q3_k_l、q3_k_m、q3_k_s:這些變體在不同張量上使用不同級別的精度,從而達到性能和效率的平衡。
q4_0:這是最初的量化方案,使用 4 位精度。
q4_1和q4_k_m、q4_k_s:這些提供了不同程度的準確性和推理速度,適合需要平衡資源使用的場景。
q5_0、q5_1、q5_k_m、q5_k_s:這些版本在保證更高準確度的同時,會使用更多的資源並且推理速度較慢。
q6_k和q8_0:這些提供了最高的精度,但是因為高資源消耗和慢速度,可能不適合所有用戶。

可以看到容量差了非常多
不過鬼話連篇的機會還是非常高。