因為一般電腦的顯示卡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:這些提供了最高的精度,但是因為高資源消耗和慢速度,可能不適合所有用戶。  可以看到容量差了非常多 不過鬼話連篇的機會還是非常高。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up