主頁 >  其他 > 【王喆-推薦系統】線上服務篇-(task5)部署離線模型

【王喆-推薦系統】線上服務篇-(task5)部署離線模型

2021-10-31 16:35:23 其他

學習總結

(1)業界主流的模型服務方法有 4 種,分別是預存推薦結果或 Embeding 結果、預訓練 Embeding+ 輕量級線上模型、利用 PMML 轉換和部署模型以及 TensorFlow Serving,在這里插入圖片描述
(2)重點使用基于Docker的 TensorFlow Serving 服務,它是 End2End 的解決方案,使用起來非常方便、高效,而且它支持絕大多數 TensorFlow 的模型結構,對于深度學習推薦系統來說,是一個非常好的選擇,
(3)但 TensorFlow Serving 只支持 TensorFlow 模型,而且針對線上服務的性能問題,需要進行大量的優化,TensorFlow serving本身在高并發下有一定的性能問題,有一些坑,各一線團隊都在進行一些魔改,

文章目錄

  • 學習總結
  • 一、業界的主流模型服務方法
  • 二、預存推薦結果或Embedding
  • 三、預訓練Embedding+輕量級線上模型
  • 四、利用PMML轉換和部署模型
  • 五、實戰搭建 TensorFlow Serving 模型服務
    • 5.1 安裝 Docker
    • 5.2 建立 TensorFlow Serving 服務
    • 5.3 請求 TensorFlow Serving 獲得預估結果
  • 六、作業
  • 七、課后答疑
  • Reference

一、業界的主流模型服務方法

在實驗室的環境下,我們經常使用 Spark MLlib、TensorFlow、PyTorch 這些流行的機器學習庫來訓練模型,因為不用直接服務用戶,所以往往得到一些離線的訓練結果就覺得大功告成了,但在業界的生產環境中,模型需要在線上運行,實時地根據用戶請求生成模型的預估值,這個把模型部署在線上環境,并實時進行模型推斷(Inference)的程序就是模型服務,

業界主流的模型服務方法有 4 種,分別是預存推薦結果或 Embedding 結果、預訓練 Embedding+ 輕量級線上模型、PMML 模型以及 TensorFlow Serving,
在這里插入圖片描述

二、預存推薦結果或Embedding

對于推薦系統線上服務來說,最簡單直接的模型服務方法就是在離線環境下生成對每個用戶的推薦結果,然后將結果預存到以 Redis 為代表的線上資料庫中,這樣,我們在線上環境直接取出預存資料推薦給用戶即可,

適用場景:只適用于用戶規模較小,或者一些冷啟動、熱門榜單等特殊的應用場景中,
在這里插入圖片描述
用戶規模大時,為了減少模型存盤所需空間,可以通過存盤embedding來替代直接存盤推薦結果,而在線上則利用embedding計算相似度得到推薦結果,在【特征工程篇】就通過 Item2vec、Graph Embedding 等方法生成物品 Embedding,再存入 Redis 供線上使用的程序,這就是預存 Embedding 的模型服務方法的典型應用,

缺點:由于完全基于線下計算出 Embedding,這樣的方式無法支持線上場景特征的引入,并且無法進行復雜模型結構的線上推斷,表達能力受限,因此對于復雜模型,我們還需要從模型實時線上推斷的角度入手,來改進模型服務的方法,

三、預訓練Embedding+輕量級線上模型

上一個方法不太行的原因:僅僅采用了“相似度計算”這樣非常簡單的方式去得到最終的推薦分數,
所以想到在線上實作一個比較復雜的操作,甚至是用神經網路來生成最終的預估值——預訓練 Embedding+ 輕量級線上模型,

具體:用復雜深度學習網路離線訓練生成 Embedding,存入記憶體資料庫,再在線上實作邏輯回歸或淺層神經網路等輕量級模型來擬合優化目標
【栗子】阿里的推薦模型 MIMN(Multi-channel user Interest Memory Network,多通道用戶興趣記憶網路)的結構,神經網路,才是真正在線上服務的部分,
不需要糾結于復雜模型的結構細節,你只要知道左邊的部分不管多復雜,它們其實是在線下訓練生成的,而右邊的部分是一個經典的多層神經網路,它才是真正在線上服務的部分,
在這里插入圖片描述

圖2 阿里的MIMN模型 (出自Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction)

(1)有兩個被虛線框框住的資料結構,分別是 S(1)-S(m) 和 M(1)-M(m)——其實就是在離線生成的 Embedding 向量,在 MIMN 模型中,它們被稱為“多通道用戶興趣向量”,這些 Embedding 向量就是連接離線模型和線上模型部分的介面,
(2)線上部分從redis資料庫拿到這些embedding后,和其他特征的embedding向量組合,扔給一個標準的多層神經網路進行預估,
優點:隔離了離線模型的復雜性和線上推斷的效率要求,

四、利用PMML轉換和部署模型

上一個方法不完全是 End2End(端到端)訓練 +End2End 部署這種最“完美”的方式,
還有一種方法是脫離于平臺的通用模型部署方式,PMML,

“預測模型標記語言”(Predictive Model Markup Language, PMML),它是一種通用的以 XML 的形式表示不同模型結構引數的標記語言,在模型上線的程序中,PMML 經常作為中間媒介連接離線訓練平臺和線上預測平臺,

以 Spark MLlib 模型的訓練和上執行緒序為例:
在這里插入圖片描述
PMML 在整個機器學習模型訓練及上線流程中扮演的角色:
例子使用了 JPMML 作為序列化和決議 PMML 檔案的 library(庫),JPMML 專案分為 Spark 和 Java Server 兩部分,Spark 部分的 library 完成 Spark MLlib 模型的序列化,生成 PMML 檔案,并且把它保存到線上服務器能夠觸達的資料庫或檔案系統中,而 Java Server 部分則完成 PMML 模型的決議,生成預估模型,完成了與業務邏輯的整合,

JPMML 在 Java Server 部分只進行推斷,不考慮模型訓練、分布式部署等一系列問題,因此 library 比較輕,能夠高效地完成推斷程序,與 JPMML 相似的開源專案還有 MLeap,同樣采用了 PMML 作為模型轉換和上線的媒介,

PS:JPMML 和 MLeap 也具備 Scikit-learn、TensorFlow 等簡單模型的轉換和上線能力,
JPMML :https://github.com/jpmml
MLeap:https://github.com/combust/mleap

五、實戰搭建 TensorFlow Serving 模型服務

PMML 語言的表示能力還是比較有限的,還不足以支持復雜的深度學習模型結構,想要上線 TensorFlow 模型,我們就需要借助 TensorFlow 的原生模型服務模塊,也就是 TensorFlow Serving 的支持,

TensorFlow Serving 和 PMML 類工具的流程一致,它們都經歷了模型存盤、模型載入還原以及提供服務的程序,

在具體細節上:TensorFlow 在離線把模型序列化,存盤到檔案系統,TensorFlow Serving 把模型檔案載入到模型服務器,還原模型推斷程序,對外以 HTTP 介面或 gRPC 介面的方式提供模型服務,
在這里插入圖片描述
具體到 Sparrow Recsys 專案中(上圖):我們會在離線使用 TensorFlow 的 Keras 介面完成模型構建和訓練,再利用 TensorFlow Serving 載入模型,用 Docker 作為服務容器,然后在 Jetty 推薦服務器中發出 HTTP 請求到 TensorFlow Serving,獲得模型推斷結果,最后推薦服務器利用這一結果完成推薦排序,

5.1 安裝 Docker

本次學習選用了 TensorFlow Serving 作為模型服務的技術方案,它們可以說是整個推薦系統的核心了,
TensorFlow Serving 最普遍、最便捷的服務方式就是使用 Docker 建立模型服務 API,
Docker介紹:(官網:https://www.docker.com/get-started)

Docker 是一個開源的應用容器引擎,你可以把它當作一個輕量級的虛擬機,它可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的作業系統,比如 Linux/Windows/Mac 的機器上,Docker 容器相互之間不會有任何介面,而且容器本身的開銷極低,這就讓 Docker 成為了非常靈活、安全、伸縮性極強的計算資源平臺,

因為 TensorFlow Serving 對外提供的是模型服務介面,所以使用 Docker 作為容器的好處主要有兩點:
一是可以非常方便的安裝(上面官網鏈接);
二是在模型服務的壓力變化時,可以靈活地增加或減少 Docker 容器的數量,做到彈性計算,彈性資源分配,

不僅可以通過圖形界面打開并運行 Docker,而且可以通過命令列來進行 Docker 相關的操作,
驗證你是否安裝成功:打開命令列輸入 docker --version 命令,它能顯示出類似“Docker version 19.03.13, build 4484c46d9d”這樣的版本號,就說明你的 Docker 環境已經準備好了,

安裝docker的坑
(1)官網下載docker:
https://www.docker.com/get-started

(2)菜鳥教程:
https://www.runoob.com/docker/ubuntu-docker-install.html
我參考這個教程,直接在ubuntu上curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun就ok了,這里會使用官方的腳本自動安裝好(出現一排sudo就慢慢等好了hh),
然后輸入docker --version,顯示如下版本號說明安裝成功:

Docker version 20.10.10, build b485636

(3)Docker容器啟動失敗 Failed to start Docker Application Container Engine的解決辦法:
https://www.cnblogs.com/huhyoung/p/9495956.html
或者參考:docker正常安裝成功,但是啟動服務報錯Failed to startDocker……Engine
或者參考Stack Overflow:
https://stackoverflow.com/questions/66091744/docker-failed-to-start

(4)卸載docker:在window10上徹底卸載docker
安裝也可以參考docker 入坑(win10和Ubuntu 安裝)

5.2 建立 TensorFlow Serving 服務

PS:搞tensorflow serving服務中遇到的困難可以參考官網,
首先,我們要利用 Docker 命令拉取 TensorFlow Serving 的鏡像(如果不行就加上sudo):

# 從docker倉庫中下載tensorflow/serving鏡像
docker pull tensorflow/serving

再從 TenSorflow 的官方 GitHub 地址下載 TensorFlow Serving 相關的測驗模型檔案:

# 把tensorflow/serving的測驗代碼clone到本地
git clone https://github.com/tensorflow/serving
# 指定測驗資料的地址
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

最后,我們在 Docker 中啟動一個包含 TensorFlow Serving 的模型服務容器,并載入我們剛才下載的測驗模型檔案 half_plus_two

# 啟動TensorFlow Serving容器,在8501埠運行模型服務API
docker run -t --rm -p 8501:8501 \
    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
    -e MODEL_NAME=half_plus_two \
    tensorflow/serving &

我的ubuntu設定的路徑后的命令應該是(不過好像有點問題,回頭看這個):

# 啟動TensorFlow Serving容器,在8501埠運行模型服務API
docker run -t --rm -p 8501:8501 \
    -v "/Desktop/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu/models/half_plus_two" \
    -e MODEL_NAME=half_plus_two \
    tensorflow/serving &

在命令執行完成后,如果你在 Docker 的管理界面(window版本)中看到了 TenSorflow Serving 容器,如下圖所示,就證明 TensorFlow Serving 服務被你成功建立起來了,而如果是用ubuntu的linux系統,則可以使用docker的圖形化Portainer容器,
在這里插入圖片描述
注意關閉docker服務是:service docker stop,其他常用的docker命令總結,

5.3 請求 TensorFlow Serving 獲得預估結果

驗證一下是否能夠通過 HTTP 請求從 TensorFlow Serving API 中獲得模型的預估結果:
(1)可以通過 curl 命令來發送 HTTP POST 請求到 TensorFlow Serving 的地址;
(2)或者利用 Postman 等軟體來組裝 POST 請求進行驗證,

# 請求模型服務API
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
    -X POST http://localhost:8501/v1/models/half_plus_two:predict

回傳結果如下,就說明 TensorFlow Serving 服務已經成功建立起來了,

# 回傳模型推斷結果如下
# Returns => { "predictions": [2.5, 3.0, 4.5] }

PS:上面只是使用了 TensorFlow Serving 官方自帶的一個測驗模型,來將怎么準備環境,在推薦模型實戰的時候,還會基于 TensorFlow 構建多種不同的深度學習模型,到時候 TensorFlow Serving 就會派上關鍵的用場了,

六、作業

你是如何在自己的專案中進行模型服務的嗎?你還用過哪些模型服務的方法?

七、課后答疑

(1)在window7上面通過docker toolbox安裝好了docker,然后在docker toolbox上pull tensorflow serving鏡像,再把tensorflow測驗模型檔案下載到本地,并配置TESTDATA地址,然后docker run服務,最后報錯了:error response form daemon: invalid mode: /models/half_plus_two

【答】估計還是TESTDATA的路徑問題,參考這篇文章https://stackoverflow.com/questions/50540721/docker-toolbox-error-response-from-daemon-invalid-mode-root-docker,

(2)建議:第一步初次安裝的國內小伙伴,添加Docker 引擎源加快拉取資料:

{
  "experimental": true,
  "debug": true,
  "registry-mirrors": [
    "http://hub-mirror.c.163.com"
  ]
}

(3)請問tf serving怎么解決預訓練embedding+輕量級預估的問題呢,如果用tf serving方案,MIMN不還是割裂的兩部分嗎,并不是端到端的啊,

【答】tf serving并不是說不能做MIMN的end2end serving,而是因為MIMN做e2e serving太慢了,所以把它割裂成兩部分,這是一個優化的程序,
這塊沒必要鉆牛角尖,我們這里說的是tf serving有e2e serving的能力,真正的工業級環境,當然是要做各種優化的,

(4)git clone tf-serving不可用,failed,網上找的以下這個可以:
git clone --recurse-submodules https://github.com/tensorflow/serving

(5)下面這個TESTDATA這句命令也是直接在command Prompt里直接打么,我試了,得到錯誤資訊“TESTDATA is not recognized as an internal or external command…” 是不是應該在別的地方打這句啊?
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

【答】這句是配置一個變數,如果不打的話,你把serving/tensorflow_serving/servables/tensorflow/testdata 的完整絕對路徑替換后面命令的TESTDATA也可以

(6)在Windows下的Git命令列里照著輸入這些指令碰到了下面的問題,運行docker run那個指令報錯:
E tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:364] FileSystemStoragePathSource encountered a filesystem access error: Could not find base path /models/half_plus_two for servable half_plus_two
報錯說找不到模型檔案,

原因:$TESTDATA這里的路徑前面是"/c:/xxx/"這種,識別不了
解決方法:手動輸入路徑,把c盤前面的’/'符號去掉,就本來是‘/c:/xxx/xxx’改成‘c:/xxx/xxx’就可以了

【另外】curl就本文中提到的命令中,windows下引號需要轉義,
curl -d ‘{“instances”: [1.0, 2.0, 5.0]}’
變成curl -d “{“instances”: [1.0, 2.0, 5.0]}” ,后面不變,
Windows 下curl轉義可以參考https://stackoverflow.com/questions/58788793/curl-query-to-tensorflow-serving-model-to-predict-api-breaks

Reference

(1)https://github.com/wzhe06/Reco-papers
(2)《深度學習推薦系統實戰》,王喆
(3)docker圖形化Portainer
(4)基礎服務系列-安裝TensorFlow Serving
(5)Tensorflow Serving: no versions of servable half_plus_two found under base path /models

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342349.html

標籤:其他

上一篇:計算機入門知識點(簡)

下一篇:從表中提取記錄值的SQL查詢?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more