18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

速看!EASY-EAI教你離線部署Deepseek R1大模型

廣州靈眸科技有限公司 ? 2025-07-25 15:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. Deepseek簡介

DeepSeek-R1,是幻方量化旗下AI公司深度求索(DeepSeek)研發(fā)的推理模型。DeepSeek-R1采用強化學習進行后訓練,旨在提升推理能力,尤其擅長數(shù)學、代碼和自然語言推理等復雜任務。作為國產AI大數(shù)據模型的代表,憑借其卓越的推理能力和高效的文本生成技術,在全球人工智能領域引發(fā)廣泛關注。本文主要說明DeepSeek-R1如何離線運行在EASY-EAI-Orin-Nano(RK3576)硬件上, RK3576 具有優(yōu)異的端側AI能效比與極高的性價比,是AI落地的不二之選。

1942cc72-6928-11f0-a486-92fbcf53809c.png

198e94fe-6928-11f0-a486-92fbcf53809c.png

演示視頻:
2. 開發(fā)環(huán)境搭建
2.1RKLLM-Toolkit安裝本節(jié)主要說明如何通過 pip 方式來安裝 RKLLM-Toolkit,用戶可以參考以下的具體流程說明完成 RKLLM-Toolkit 工具鏈的安裝。

工具安裝包鏈接: https://pan.baidu.com/s/1y5ZN5sl4e3HJI5d9Imt4pg?pwd=1234(提取碼: 1234)

19ce5a44-6928-11f0-a486-92fbcf53809c.png

2.1.1安裝miniforge3工具

為防止系統(tǒng)對多個不同版本的 Python 環(huán)境的需求,建議使用 miniforge3 管理 Python 環(huán)境。檢查是否安裝 miniforge3 和 conda 版本信息,若已安裝則可省略此小節(jié)步驟。

下載 miniforge3 安裝包:

wget -c https://mirrors.bfsu.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh

安裝miniforge3:

chmod 777 Miniforge3-Linux-x86_64.shbash Miniforge3-Linux-x86_64.sh

2.1.2創(chuàng)建 RKLLM-Toolkit Conda 環(huán)境進入 Conda base 環(huán)境:

source ~/miniforge3/bin/activate

創(chuàng)建一個 Python3.8 版本(建議版本)名為 RKLLM-Toolkit 的 Conda 環(huán)境:

conda create -n RKLLM-Toolkit python=3.8

進入 RKLLM-Toolkit Conda 環(huán)境:

conda activate RKLLM-Toolkit

19f509c8-6928-11f0-a486-92fbcf53809c.png

2.1.3安裝RKLLM-Toolkit

在 RKLLM-Toolkit Conda 環(huán)境下使用 pip 工具直接安裝所提供的工具鏈 whl 包,在安裝過程 中,安裝工具會自動下載 RKLLM-Toolkit 工具所需要的相關依賴包。

pip3 install nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whlpip3 install torch-2.1.0-cp38-cp38-manylinux1_x86_64.whlpip3 install rkllm_toolkit-1.1.4-cp38-cp38-linux_x86_64.whl

若在安裝的過程中,某些文件安裝很慢,可以登錄python官網單獨下載:

https://pypi.org/

執(zhí)行以下命令沒有報錯,則安裝成功。

1a1e0062-6928-11f0-a486-92fbcf53809c.png

3.Deepseek-R1模型轉換
本章主要說明如何實現(xiàn)Deepseek-R1大語言模型如何轉換為RKLLM模型。

3.1模型與腳本下載

本節(jié)提供兩種大模型文件,Hugging face的原始模型和轉換完成的NPU模型。

1a61cc2a-6928-11f0-a486-92fbcf53809c.png

還有用于模型轉換的腳本:

1a7f8a76-6928-11f0-a486-92fbcf53809c.png

3.2模型轉換下載完成后模型和腳本放到同一個目錄:

1a99893a-6928-11f0-a486-92fbcf53809c.png

在RKLLM-Toolkit環(huán)境,執(zhí)行以下指令進行模型轉換:

1abaffa2-6928-11f0-a486-92fbcf53809c.png

至此模型轉換成功,生成deepseek_w4a16.rkllm NPU化的大模型文件:

1ae4d1ba-6928-11f0-a486-92fbcf53809c.png

test.py轉換腳本如下所示, 用于轉換deepseek-r1模型:

from rkllm.api import RKLLMfrom datasets import load_datasetfrom transformers import AutoTokenizerfrom tqdm import tqdmimport torchfrom torch import nnimport os# os.environ['CUDA_VISIBLE_DEVICES']='1'

modelpath = '/home/developer/RKLLM-Toolkit/DeepSeek-R1-Distill-Qwen-1.5B'llm = RKLLM()
# Load model# Use 'export CUDA_VISIBLE_DEVICES=2' to specify GPU device# options ['cpu', 'cuda']ret = llm.load_huggingface(model=modelpath, model_lora = None, device='cpu')# ret = llm.load_gguf(model = modelpath)if ret != 0: print('Load model failed!') exit(ret)
# Build modeldataset = "./data_quant.json"# Json file format, please note to add prompt in the input,like this:# [{"input":"Human: 你好!\nAssistant: ", "target": "你好!我是人工智能助手KK!"},...]
qparams = None# qparams = 'gdq.qparams' # Use extra_qparamsret = llm.build(do_quantization=True, optimization_level=1, quantized_dtype='w4a16', quantized_algorithm='normal', target_platform='rk3576', num_npu_core=2, extra_qparams=qparams, dataset=None)
if ret != 0: print('Build model failed!') exit(ret)
# Chat with modelmessages = "<|im_start|>system You are a helpful assistant.<|im_end|><|im_start|>user你好!\n<|im_end|><|im_start|>assistant"kwargs = {"max_length": 128, "top_k": 1, "top_p": 0.8, "temperature": 0.8, "do_sample": True, "repetition_penalty": 1.1}# print(llm.chat_model(messages, kwargs))

# Export rkllm modelret = llm.export_rkllm("./deepseek_r1_rk3576_w4a16.rkllm")if ret != 0:print('Export model failed!')

4.Deepseek-R1模型部署
本章主要說明RKLLM格式的NPU模型如何運行在EASY-EAI-Orin-Nano硬件上。

1b05e800-6928-11f0-a486-92fbcf53809c.png

下載鏈接:https://pan.baidu.com/s/1B-DZTI-Q6i__b6Tdsrk_Ow?pwd=1234(提取碼: 1234)然后把例程【復制粘貼】到nfs掛載目錄中。(不清楚目錄如何構建的,可以參考《入門指南/開發(fā)環(huán)境準備/nfs服務搭建與掛載》)。特別注意:源碼目錄和模型最好cp到板子上,如/userdata,否則在nfs目錄執(zhí)行大模型會導致模型初始化過慢。

1b25cfa8-6928-11f0-a486-92fbcf53809c.png

進入到開發(fā)板對應的例程目錄執(zhí)行編譯操作,具體命令如下所示:

cd /userdata/deepseek-demo/./build.sh

1b427338-6928-11f0-a486-92fbcf53809c.png4.1例程運行及效果進入例程的deepseek-demo/deepseek-demo_release目錄,執(zhí)行下方命令,運行示例程序:

cd deepseek-demo_release/ulimit -HSn 102400 ./deepseek-demo deepseek_w4a16.rkllm 256 512

1b6d847e-6928-11f0-a486-92fbcf53809c.png

至此可以進行對話測試了,試著輸入“直角三角形兩直角邊是3和4,斜邊是多少?”?;卮鹑缦滤?

1b88600a-6928-11f0-a486-92fbcf53809c.png

4.2RKLLM算法例程例程目錄為rkllm-demo/src/main.cpp,操作流程如下。

1ba204ec-6928-11f0-a486-92fbcf53809c.png具體代碼如下所示:

#include #include #include #include "rkllm.h"#include #include #include #include
#define PROMPT_TEXT_PREFIX "<|im_start|>system You are a helpful assistant. <|im_end|> <|im_start|>user"#define PROMPT_TEXT_POSTFIX "<|im_end|><|im_start|>assistant"

using namespace std;LLMHandle llmHandle = nullptr;
void exit_handler(int signal){ if (llmHandle != nullptr) { { cout << "程序即將退出" << endl; LLMHandle _tmp = llmHandle; llmHandle = nullptr; rkllm_destroy(_tmp); } } exit(signal);}
void callback(RKLLMResult *result, void *userdata, LLMCallState state){ if (state == RKLLM_RUN_FINISH) { printf("\n"); } else if (state == RKLLM_RUN_ERROR) { printf("\\run error\n"); } else if (state == RKLLM_RUN_GET_LAST_HIDDEN_LAYER) { /* ================================================================================================================ 若使用GET_LAST_HIDDEN_LAYER功能,callback接口會回傳內存指針:last_hidden_layer,token數(shù)量embd_size 通過這三個參數(shù)可以取得last_hidden_layer中的數(shù)據 注:需要在當前callback中獲取,若未及時獲取,下一次callback會將該指針釋放 ===============================================================================================================*/ if (result->last_hidden_layer.embd_size != 0 && result->last_hidden_layer.num_tokens != 0) { int data_size = result->last_hidden_layer.embd_size * result->last_hidden_layer.num_tokens * sizeof(float); printf("\ndata_size:%d",data_size); std::ofstream outFile("last_hidden_layer.bin", std::binary); if (outFile.is_open()) { outFile.write(reinterpret_cast(result->last_hidden_layer.hidden_states), data_size); outFile.close(); std::cout << "Data saved to output.bin successfully!" << std::endl; } else { std::cerr << "Failed to open the file for writing!" << std::endl; } } } else if (state == RKLLM_RUN_NORMAL) { printf("%s", result->text); }}
int main(int argc, char **argv){ if (argc < 4) { std::cerr << "Usage: " << argv[0] << " model_path max_new_tokens max_context_len\n"; return 1; }
signal(SIGINT, exit_handler); printf("rkllm init start\n");
//設置參數(shù)及初始化 RKLLMParam param = rkllm_createDefaultParam(); param.model_path = argv[1];
//設置采樣參數(shù) param.top_k = 1; param.top_p = 0.95; param.temperature = 0.8; param.repeat_penalty = 1.1; param.frequency_penalty = 0.0; param.presence_penalty = 0.0;
param.max_new_tokens = std::atoi(argv[2]); param.max_context_len = std::atoi(argv[3]); param.skip_special_token = true; param.extend_param.base_domain_id = 0;
int ret = rkllm_init(&llmHandle, ?m, callback); if (ret == 0){ printf("rkllm init success\n"); } else { printf("rkllm init failed\n"); exit_handler(-1); }
string text; RKLLMInput rkllm_input;
// 初始化 infer 參數(shù)結構體 RKLLMInferParam rkllm_infer_params; memset(&rkllm_infer_params, 0, sizeof(RKLLMInferParam)); // 將所有內容初始化為 0
// 1. 初始化并設置 LoRA 參數(shù)(如果需要使用 LoRA) // RKLLMLoraAdapter lora_adapter; // memset(&lora_adapter, 0, sizeof(RKLLMLoraAdapter)); // lora_adapter.lora_adapter_path = "qwen0.5b_fp16_lora.rkllm"; // lora_adapter.lora_adapter_name = "test"; // lora_adapter.scale = 1.0; // ret = rkllm_load_lora(llmHandle, &lora_adapter); // if (ret != 0) { // printf("\nload lora failed\n"); // }
// 加載第二個lora // lora_adapter.lora_adapter_path = "Qwen2-0.5B-Instruct-all-rank8-F16-LoRA.gguf"; // lora_adapter.lora_adapter_name = "knowledge_old"; // lora_adapter.scale = 1.0; // ret = rkllm_load_lora(llmHandle, &lora_adapter); // if (ret != 0) { // printf("\nload lora failed\n"); // }
// RKLLMLoraParam lora_params; // lora_params.lora_adapter_name = "test"; // 指定用于推理的 lora 名稱 // rkllm_infer_params.lora_params = &lora_params;
// 2. 初始化并設置 Prompt Cache 參數(shù)(如果需要使用 prompt cache) // RKLLMPromptCacheParam prompt_cache_params; // prompt_cache_params.save_prompt_cache = true; // 是否保存 prompt cache // prompt_cache_params.prompt_cache_path = "./prompt_cache.bin"; // 若需要保存prompt cache, 指定 cache 文件路徑 // rkllm_infer_params.prompt_cache_params = &prompt_cache_params;
// rkllm_load_prompt_cache(llmHandle, "./prompt_cache.bin"); // 加載緩存的cache
rkllm_infer_params.mode = RKLLM_INFER_GENERATE;
while (true) { std::string input_str; printf("\n"); printf("user: "); std::getline(std::cin, input_str); if (input_str == "exit") { break; } for (int i = 0; i < (int)pre_input.size(); i++) { if (input_str == to_string(i)) { input_str = pre_input[i]; cout << input_str << endl; } }
//text = PROMPT_TEXT_PREFIX + input_str + PROMPT_TEXT_POSTFIX; text = input_str; rkllm_input.input_type = RKLLM_INPUT_PROMPT; rkllm_input.prompt_input = (char *)text.c_str(); printf("robot: ");
// 若要使用普通推理功能,則配置rkllm_infer_mode為RKLLM_INFER_GENERATE或不配置參數(shù) rkllm_run(llmHandle, &rkllm_input, &rkllm_infer_params, NULL); } rkllm_destroy(llmHandle);
return 0;}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    88

    文章

    37117

    瀏覽量

    291158
  • 大模型
    +關注

    關注

    2

    文章

    3356

    瀏覽量

    4774
  • DeepSeek
    +關注

    關注

    2

    文章

    821

    瀏覽量

    2643
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    部署DeepSeek R1于AX650N與AX630C平臺

    適配 DeepSeek R1 系列模型的最新進展,向業(yè)界對端側大模型部署的開發(fā)者提供一種新的思路,促進社區(qū)對端側大
    的頭像 發(fā)表于 02-09 09:32 ?1740次閱讀
    <b class='flag-5'>部署</b><b class='flag-5'>DeepSeek</b> <b class='flag-5'>R1</b>于AX650N與AX630C平臺

    了解DeepSeek-V3 和 DeepSeek-R1兩個大模型的不同定位和應用選擇

    ); 二者均支持API調用,可根據業(yè)務需求混合部署(如用V3處理前端交互,R1負責后端計算)。 在電子工程領域選用哪個模型最合適,有其他更好的模型推薦嗎? 在電子工程領域的電路設計與
    發(fā)表于 02-14 02:08

    RK3588開發(fā)板上部署DeepSeek-R1模型的完整指南

    DeepSeek作為國產AI大數(shù)據模型的代表,憑借其卓越的推理能力和高效的文本生成技術,在全球人工智能領域引發(fā)廣泛關注。DeepSeek-R1作為該系列最新迭代版本,實現(xiàn)了長文本處理效能躍遷、多模態(tài)
    發(fā)表于 02-27 16:45

    EASY EAI Orin Nano開發(fā)板試用體驗】EASY-EAI-Toolkit人臉識別

    本篇使用算法組件實現(xiàn)人臉檢測。 一.準備工作 1.首先使用到EASY-EAI-Toolkit組件,ubuntu掛載目錄下克隆git clone https://github.com/EASY-EAI
    發(fā)表于 07-20 14:40

    EASY EAI Nano人工智能開發(fā)套件試用體驗】EASY EAI Nano人工智能開發(fā)套件開發(fā)環(huán)境的準備和架設

    編譯環(huán)境準備與更新]() Easy-Eai編譯環(huán)境準備與更新 1. 部署EASY-EAI編譯環(huán)境 1.1 EASY-EAI編譯環(huán)境簡介
    發(fā)表于 06-10 10:32

    EASY EAI Nano人工智能開發(fā)套件試用體驗】EASY EAI Nano人工智能開發(fā)套件開箱及最快上手教程

    / 執(zhí)行命令,啟動門禁機程序: ./qSolu-facialGate 運行效果: 好了,至此已經完成了開發(fā)環(huán)境的搭建,并跑通了第一個Demo,恭喜你順利上手了EASY EAI Nano人工智能開發(fā)套件的開發(fā),接下來可以探索其他Demo,
    發(fā)表于 06-11 13:34

    EASY-EAI攜手Hailo推出高性能、高算力的邊緣AI硬件組合

    EASY-EAI與Hailo建立合作關系,共同推出高算力的邊緣AI產品組合。
    的頭像 發(fā)表于 02-21 09:56 ?1543次閱讀

    云天勵飛上線DeepSeek R1系列模型

    -Distill-Llama-70B大模型、DeepSeek V3/R1 671B MoE大模型也在有序適配中。適配完成后,DeepEdge10芯片平臺將在端、邊、云全面支持
    的頭像 發(fā)表于 02-06 10:39 ?961次閱讀
    云天勵飛上線<b class='flag-5'>DeepSeek</b> <b class='flag-5'>R1</b>系列<b class='flag-5'>模型</b>

    扣子平臺支持DeepSeek R1與V3模型

    近日,新一代AI應用搭建平臺“扣子”宣布了一項重要更新,即正式支持DeepSeekR1和V3模型,并向廣大用戶開放免費體驗。 扣子平臺一直以來都致力于為用戶提供便捷、高效的AI應用搭建服務,幫助
    的頭像 發(fā)表于 02-08 13:42 ?1680次閱讀

    Deepseek R1模型離線部署教程

    。作為國產AI大數(shù)據模型的代表,憑借其卓越的推理能力和高效的文本生成技術,在全球人工智能領域引發(fā)廣泛關注。 本文主要說明DeepSeek-R1如何離線運行在EASY-EAI-Orin-
    的頭像 發(fā)表于 02-12 09:37 ?2211次閱讀
    <b class='flag-5'>Deepseek</b> <b class='flag-5'>R1</b>大<b class='flag-5'>模型</b><b class='flag-5'>離線</b><b class='flag-5'>部署</b>教程

    研華邊緣AI Box MIC-ATL3S部署Deepseek R1模型

    隨著深度求索(DeepSeek)大模型的發(fā)布引發(fā)行業(yè)熱議,研華科技基于昇騰Atlas平臺邊緣AI Box MIC-ATL3S正式發(fā)布與Deepseek R1
    的頭像 發(fā)表于 02-14 16:08 ?2421次閱讀
    研華邊緣AI Box MIC-ATL3S<b class='flag-5'>部署</b><b class='flag-5'>Deepseek</b> <b class='flag-5'>R1</b><b class='flag-5'>模型</b>

    研華發(fā)布昇騰AI Box及Deepseek R1模型部署流程

    近日,隨著深度求索(DeepSeek)大模型的發(fā)布在行業(yè)內掀起熱議,研華科技正式推出了基于昇騰Atlas平臺的邊緣AI Box MIC-ATL3S,并同步發(fā)布了與Deepseek R1
    的頭像 發(fā)表于 02-19 10:41 ?982次閱讀

    ORinNano離線部署Deepseek R1模型教程

    ORinNano離線部署Deepseek R1模型教程
    的頭像 發(fā)表于 04-10 15:32 ?859次閱讀
    ORinNano<b class='flag-5'>離線</b><b class='flag-5'>部署</b><b class='flag-5'>Deepseek</b> <b class='flag-5'>R1</b>大<b class='flag-5'>模型</b>教程

    瑞薩RZ/V2H平臺支持部署離線DeepSeek -R1大語言模型

    瑞薩RZ/V2H平臺支持部署離線DeepSeek -R1大語言模型
    的頭像 發(fā)表于 05-13 17:07 ?1250次閱讀
    瑞薩RZ/V2H平臺支持<b class='flag-5'>部署</b><b class='flag-5'>離線</b>版<b class='flag-5'>DeepSeek</b> -<b class='flag-5'>R1</b>大語言<b class='flag-5'>模型</b>

    EASY-EAI攜手Hailo,推出高性能、高算力的邊緣AI硬件組合

    導讀EASY-EAI與Hailo建立合作關系,共同推出高算力的邊緣AI產品組合。此次合作,EASY-EAI將采用Hailo公司的AI加速芯片,并與我司硬件相結合,打造一款性能優(yōu)異、性價比高的邊緣人
    的頭像 發(fā)表于 07-25 15:22 ?633次閱讀
    <b class='flag-5'>EASY-EAI</b>攜手Hailo,推出高性能、高算力的邊緣AI硬件組合