欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Deepseek R1大模型離線部署教程

EASY EAI靈眸科技 ? 來源:EASY EAI靈眸科技 ? 2025-02-12 09:37 ? 次閱讀

1. Deepseek簡介

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

9c88ca24-e85d-11ef-9310-92fbcf53809c.png

9ca06f12-e85d-11ef-9310-92fbcf53809c.png

2. 開發(fā)環(huán)境搭建

2.1RKLLM-Toolkit安裝

本節(jié)主要說明如何通過 pip 方式來安裝 RKLLM-Toolkit,用戶可以參考以下的具體流程說明完成 RKLLM-Toolkit 工具鏈的安裝。

9cd716b6-e85d-11ef-9310-92fbcf53809c.png

2.1.1安裝miniforge3工具

為防止系統(tǒng)對多個(gè)不同版本的 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.sh
bash Miniforge3-Linux-x86_64.sh
2.1.2創(chuàng)建 RKLLM-Toolkit Conda 環(huán)境


進(jìn)入 Conda base 環(huán)境:

source ~/miniforge3/bin/activate
創(chuàng)建一個(gè) Python3.8 版本(建議版本)名為 RKLLM-Toolkit 的 Conda 環(huán)境:

conda create -n RKLLM-Toolkit python=3.8


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

conda activate RKLLM-Toolkit

9ce30d54-e85d-11ef-9310-92fbcf53809c.png

2.1.3安裝RKLLM-Toolkit


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

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

若在安裝的過程中,某些文件安裝很慢,可以登錄python官網(wǎng)單獨(dú)下載:
https://pypi.org/

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

9ceae664-e85d-11ef-9310-92fbcf53809c.png



3.Deepseek-R1模型轉(zhuǎn)換

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

3.1模型與腳本下載

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

9d1e652a-e85d-11ef-9310-92fbcf53809c.png

還有用于模型轉(zhuǎn)換的腳本:

9d2e9ac6-e85d-11ef-9310-92fbcf53809c.png



3.2模型轉(zhuǎn)換

下載完成后模型和腳本放到同一個(gè)目錄:

9d47d3b0-e85d-11ef-9310-92fbcf53809c.png

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

9d64c812-e85d-11ef-9310-92fbcf53809c.png

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

9d77b0a8-e85d-11ef-9310-92fbcf53809c.png

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

from rkllm.api import RKLLM
from datasets import load_dataset
from transformers import AutoTokenizer
from tqdm import tqdm
import torch
from torch import nn
import 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 model
dataset = "./data_quant.json"
# Json file format, please note to add prompt in the input,like this:
# [{"input":"Human: 你好!
Assistant: ", "target": "你好!我是人工智能助手KK!"},...]


qparams = None
# qparams = 'gdq.qparams' # Use extra_qparams
ret = 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 model
messages = "<|im_start|>system You are a helpful assistant.<|im_end|><|im_start|>user你好!
<|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 model
ret = llm.export_rkllm("./deepseek_r1_rk3576_w4a16.rkllm")
if ret != 0:
print('Export model failed!')
4.Deepseek-R1模型部署

本章主要說明RKLLM格式的NPU模型如何運(yùn)行在EASY-EAI-Orin-Nano硬件上。

9d9122fe-e85d-11ef-9310-92fbcf53809c.png



然后把例程【復(fù)制粘貼】到nfs掛載目錄中。(不清楚目錄如何構(gòu)建的,可以參考《入門指南/開發(fā)環(huán)境準(zhǔn)備/nfs服務(wù)搭建與掛載》)。

特別注意:源碼目錄和模型最好cp到板子上,如/userdata,否則在nfs目錄執(zhí)行大模型會導(dǎo)致模型初始化過慢。

9daa1804-e85d-11ef-9310-92fbcf53809c.png

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

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

9dc31fa2-e85d-11ef-9310-92fbcf53809c.png

4.1例程運(yùn)行及效果

進(jìn)入例程的deepseek-demo/deepseek-demo_release目錄,執(zhí)行下方命令,運(yùn)行示例程序:

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

9de3bfaa-e85d-11ef-9310-92fbcf53809c.png

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

9e019c1e-e85d-11ef-9310-92fbcf53809c.png

4.2RKLLM算法例程

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

9e11f6d6-e85d-11ef-9310-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("
");
    } else if (state == RKLLM_RUN_ERROR) {
        printf("\run error
");
    } else if (state == RKLLM_RUN_GET_LAST_HIDDEN_LAYER) {
        /* ================================================================================================================
        若使用GET_LAST_HIDDEN_LAYER功能,callback接口會回傳內(nèi)存指針:last_hidden_layer,token數(shù)量:num_tokens與隱藏層大小:embd_size
        通過這三個(gè)參數(shù)可以取得last_hidden_layer中的數(shù)據(jù)
        注:需要在當(dāng)前callback中獲取,若未及時(shí)獲取,下一次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("
data_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
";
        return 1;
    }


    signal(SIGINT, exit_handler);
    printf("rkllm init start
");


    //設(shè)置參數(shù)及初始化
    RKLLMParam param = rkllm_createDefaultParam();
    param.model_path = argv[1];


    //設(shè)置采樣參數(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
");
    } else {
        printf("rkllm init failed
");
        exit_handler(-1);
    }


    string text;
    RKLLMInput rkllm_input;


    // 初始化 infer 參數(shù)結(jié)構(gòu)體
    RKLLMInferParam rkllm_infer_params;
    memset(&rkllm_infer_params, 0, sizeof(RKLLMInferParam));  // 將所有內(nèi)容初始化為 0


    // 1. 初始化并設(shè)置 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("
load lora failed
");
    // }


    // 加載第二個(gè)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("
load lora failed
");
    // }


    // RKLLMLoraParam lora_params;
    // lora_params.lora_adapter_name = "test";  // 指定用于推理的 lora 名稱
    // rkllm_infer_params.lora_params = &lora_params;


    // 2. 初始化并設(shè)置 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("
");
        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;
}

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

    關(guān)注

    1796

    文章

    47811

    瀏覽量

    240590
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2609

    瀏覽量

    3223
  • rk3576
    +關(guān)注

    關(guān)注

    1

    文章

    56

    瀏覽量

    246
  • DeepSeek
    +關(guān)注

    關(guān)注

    1

    文章

    227

    瀏覽量

    83

原文標(biāo)題:速看!EASY-EAI教你離線部署Deepseek R1大模型

文章出處:【微信號:easy-eai-AIoT,微信公眾號:EASY EAI靈眸科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    在龍芯3a6000上部署DeepSeek 和 Gemma2大模型

    serve 2.運(yùn)行deepseek-r1模型 到以下網(wǎng)站選擇不同參數(shù)的大模型 https://ollama.com/library/deepseek-r1 新開一個(gè)終端執(zhí)行如下
    發(fā)表于 02-07 19:35

    英偉達(dá)發(fā)布DeepSeek R1于NIM平臺

    英偉達(dá)近日宣布,其DeepSeek R1 671b版本已正式上線英偉達(dá)NIM(NVIDIA Inference Microservices)平臺,并以預(yù)覽版的形式在build.nvidia.com
    的頭像 發(fā)表于 02-05 14:48 ?220次閱讀

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

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

    摩爾線程宣布成功部署DeepSeek蒸餾模型推理服務(wù)

    。 據(jù)悉,DeepSeek開源模型在多語言理解與復(fù)雜推理任務(wù)中一直表現(xiàn)出卓越的性能,其V3、R1等系列模型更是備受業(yè)界關(guān)注。而此次摩爾線程所實(shí)現(xiàn)的D
    的頭像 發(fā)表于 02-06 13:49 ?267次閱讀

    鯤云科技AI芯片CAISA 430成功適配DeepSeek R1模型

    鯤云科技全新一代的可重構(gòu)數(shù)據(jù)流 AI 芯片 CAISA 430 成功適配 DeepSeek R1 蒸餾模型推理,這一創(chuàng)新舉措為大模型應(yīng)用的高效部署
    的頭像 發(fā)表于 02-07 09:57 ?411次閱讀
    鯤云科技AI芯片CAISA 430成功適配<b class='flag-5'>DeepSeek</b> <b class='flag-5'>R1</b><b class='flag-5'>模型</b>

    deepin UOS AI接入DeepSeek-R1模型

    DeepSeek-R1 模型自發(fā)布以來吸引了眾多用戶關(guān)注,為了讓 deepin 用戶更好地體驗(yàn)這一前沿技術(shù),UOS AI 現(xiàn)已適配接入 DeepSeek-R1 端側(cè)模型!無需忍受服務(wù)器
    的頭像 發(fā)表于 02-08 09:52 ?216次閱讀

    DeepSeek-R1本地部署指南,開啟你的AI探索之旅

    R1 2025.01.20 DeepSeek-R1 發(fā)布,DeepSeek R1DeepSeek AI 開發(fā)的第一代推理
    的頭像 發(fā)表于 02-08 10:30 ?2247次閱讀
    <b class='flag-5'>DeepSeek-R1</b>本地<b class='flag-5'>部署</b>指南,開啟你的AI探索之旅

    Krea發(fā)布Deepseek R1驅(qū)動的Chat功能

    近日,Krea平臺迎來了一項(xiàng)重大更新——全新發(fā)布的Krea chat功能。這一功能由Deepseek R1驅(qū)動,為用戶帶來了前所未有的便捷體驗(yàn)。 通過Krea chat,用戶可以直接在聊天窗口中調(diào)用
    的頭像 發(fā)表于 02-08 11:09 ?256次閱讀

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

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

    壁仞科技順利部署DeepSeek R1千問蒸餾模型

    DeepSeek 的國內(nèi)算力支持隊(duì)伍進(jìn)一步壯大:來自上海的壁仞科技順利部署DeepSeek-R1-Distill千問蒸餾模型(1.5B/7B/14B/32B),并已上線 Gitee A
    的頭像 發(fā)表于 02-08 16:56 ?615次閱讀

    部署DeepSeek R1于AX650N與AX630C平臺

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

    AIBOX 全系產(chǎn)品已適配 DeepSeek-R1

    國產(chǎn)AI大模型DeepSeek以出色的性價(jià)比和高效的模型技術(shù),迅速成為全球AI關(guān)注的焦點(diǎn)。Firefly開源團(tuán)隊(duì)率先實(shí)現(xiàn)AIBOX系列產(chǎn)品對DeepSeek-R1的全面適配。
    的頭像 發(fā)表于 02-08 17:30 ?132次閱讀
    AIBOX 全系產(chǎn)品已適配 <b class='flag-5'>DeepSeek-R1</b>

    Gitee AI 聯(lián)合沐曦首發(fā)全套 DeepSeek R1 千問蒸餾模型,全免費(fèi)體驗(yàn)!

    模型相比,較小尺寸的 DeepSeek 蒸餾版本模型 更適合企業(yè)內(nèi)部實(shí)施部署,可以極大的降低落地成本 。 同時(shí),這次 Deepseek
    的頭像 發(fā)表于 02-10 09:56 ?49次閱讀
    Gitee AI 聯(lián)合沐曦首發(fā)全套 <b class='flag-5'>DeepSeek</b> <b class='flag-5'>R1</b> 千問蒸餾<b class='flag-5'>模型</b>,全免費(fèi)體驗(yàn)!

    DeepSeek模型成功部署,物通博聯(lián)在 AI 賦能工業(yè)上持續(xù)探索、不斷前行

    和二次開發(fā),DeepSeek R1模型的發(fā)布迅速點(diǎn)燃了AI產(chǎn)業(yè)的革命之火。 DeepSeek R1 通過蒸餾將大
    的頭像 發(fā)表于 02-12 11:15 ?44次閱讀

    DeepSeek4J開源:高效解決DeepSeek R1集成挑戰(zhàn)

    隨著 DeepSeek R1 模型的發(fā)布,其強(qiáng)大的思維鏈能力讓開發(fā)者為之興奮。然而,Spring AI 等主流框架對其支持不足,導(dǎo)致很多開發(fā)者無法充分發(fā)揮模型潛力。本文將為您帶來一個(gè)完
    的頭像 發(fā)表于 02-12 11:33 ?35次閱讀
    <b class='flag-5'>DeepSeek</b>4J開源:高效解決<b class='flag-5'>DeepSeek</b> <b class='flag-5'>R1</b>集成挑戰(zhàn)