ortex 在原有的智慧合約中額外新增一個 Infer 指令,使得在智慧合約中可以支援使用 Cortex 鏈上的模型。
下述虛擬碼表述瞭如何在智慧合約裡使用 Infer ,當使用者呼叫智慧合約的時候就會對這個模型進行一次推斷:
模型提交框架
前面分析了鏈上訓練的難處和不可行性,Cortex 提出了鏈下 (Offchain) 進行訓練的提交介面,包括模型的指令解析虛擬機器。這能夠給算力提供方和模型提交者搭建交易和合作的橋樑。
使用者將模型透過 Cortex 的 CVM 解析成模型字串以及引數,打包上傳到儲存層,併發布通用介面,讓智慧合約編寫使用者進行呼叫。模型提交者需要支付一定的儲存費用得以保證模型能在儲存層持續儲存。對智慧合約中呼叫過此模型進行 Infer 所收取的費用會有一部分交付給模型提交者。提交者也可以根據需要進行撤回和更新等操作。對於撤回的情況,為了保證呼叫此模型的智慧合約可以正常運作,Cortex 會根據模型的使用情況進行託管,並且保持呼叫此模型收取的費用和儲存維護費用相當。Cortex 同時會提供一個介面將模型上傳到儲存層並獲得模型雜湊。之後提交者發起一筆交易,執行智慧合約將模型雜湊寫入儲存中。這樣所有使用者就可以知道這個模型的輸入輸出狀態。
智慧 AI 合約
Cortex 允許使用者在 Cortex 鏈上進行和機器學習相關的程式設計,並且提交一些依賴其他合約的互動,這將變得十分有趣。比如以太坊上執行的電子寵物 Cryptokitties ,寵物之間的互動可以是動態的、智慧的、進化的。透過使用者上傳的增強學習模型,賦予智慧合約結合人工智慧,可以很方便的實現類似帶有人工智慧的各種應用。
同時 Cortex 為其他鏈提供 AI 呼叫介面。比如在比特幣現金和以太坊上,Cortex 提供基於人工智慧的合約錢包地址上分析的呼叫結果。那些分析地址的模型將將不僅有助於監管科技 (RegTech),也能給一般使用者提供轉賬目標地址的動態風險評估。
2.模型和資料儲存
Cortex 鏈並不實際儲存模型和資料,只儲存模型和資料的 Hash 值,真正的模型和資料儲存在鏈外的 key-value 儲存系統中。新模型和新資料在節點上有足夠多的副本之後將可以在鏈上可用。
3.Cortex 共識推斷標準
當使用者發起一筆交易到某個合約之後,全節點需要執行該智慧合約的程式碼。Cortex 和普通智慧合約不同的地方在於其智慧合約中可能涉及推斷指令,需要全節點對於這個推斷指令的結果進行共識。整個全節點的執行流程是:
1. 全節點透過查詢模型索引找到模型在儲存層的位置,並下載該模型的模型字串和對應的引數資料。
2. 透過 Cortex 模型表示工具將模型字串轉換成可執行程式碼。
3. 透過 Cortex 提供的虛擬機器 CVM ,執行可執行程式碼,得到結果後進行全節點廣播共識。
Cortex 模型表示工具的作用可以分為兩部分:
1. 模型提交者需要將自己編寫的模型程式碼透過模型表示工具轉化為模型字串之後才可以提交到儲存層。
2. 全節點下載模型字串之後透過模型表示工具提供的轉換器轉換成可執行程式碼後,在 Cortex 虛擬機器中執行推斷操作。
Cortex 虛擬機器的作用在於全節點的每次推斷執行都是確定的。
4.如何挑選優秀的模型
Cortex 鏈不會對模型進行限制,使用者可以依靠模型 infer 的呼叫次數作為相對客觀的模型評價標準。當模型使用者對模型有不計計算代價的高精度需求時,Cortex 支援保留
原有模型引數使用浮點數來表示。從而,官方或者第三方機構可以透過自行定義對模型的排序機制(召回率,準確率,計算速度,基準排序資料集等),達成模型的甄選工作,並展示在第三方的網站或者應用中。
5 共識機制:PoW 挖礦
一直以來,一機一票的加密數字貨幣社羣設想並未實現。原因是 ASIC 的特殊設計使得計算加速比得到大幅提升。社羣和學術界探索了很多記憶體瓶頸演算法來對顯示卡和 CPU 挖礦更加友好,而無需花費大量資金購買專業挖礦裝置。近年來社羣實踐的結果顯示,以太坊的 Dagger-Hashimoto和 Zcash 的 Equihash是比較成功的顯示卡優先原則的演算法實踐。
Cortex 鏈將進一步秉承一機一票優先,採用 Cuckoo Cycle 的 PoW 進一步縮小 CPU和顯示卡之間加速比的差距。同時 Cortex 鏈將充分發掘智慧手機顯示卡的效能,使得手機和桌面電腦的顯示卡差距符合通用硬體平臺測評工具(如 GFXBench )的差距比例:比如,最好的消費級別顯示卡是最好的手機顯示卡算力的 10-15 倍。考慮到手機計算的功耗比更低,使得大規模使用者在夜間充電時間利用手機挖礦將變得更加可行。
特別值得注意的一點是,出塊加密的共識演算法和鏈上的智慧推斷合約的計算並沒有直接聯絡,PoW 保障參與挖礦的礦工們硬體上更加公平,而智慧計算合約則自動提供公眾推理的可驗證性。
6.防作弊以及模型篩選
由於模型是完全公開的,所以可能會有模型被複制或抄襲等現象發生。在一般情況下,如果是一個非常優秀的模型,往往上線之後就會有很高的使用量,而針對這些模型進行抄襲並沒有很大優勢,但是,在一些特殊情況下,對一些很明顯的抄襲或者完全複製的行為,Cortex 會進行介入並且仲裁,並透過鏈上 Oracle 的方式公示。
軟體方案
1.CVM:EVM + Inference
Cortex 擁有自己的虛擬機器,稱為 Cortex Virtual Machine(CVM)。CVM 指令集完全相容 EVM,此外,CVM 還提供對於推斷指令的支援。Cortex 將在 0xc0 加入一個新的 INFER 指令。這條指令的輸入是推斷程式碼,輸出是推斷結果。CVM 使用的虛擬機器指令包含的內容在表 1中說明。
2.Cortex 核心指令集與框架標準
人工智慧的典型應用——影象問題,語音/語義/文字問題,與強化學習問題無一例外的需要以下張量操作。Cortex 以張量操作的代價作為 Endorphin 計費的一種潛在錨定手段,剖析機器學習以及深度學習的核心指令集。在不同計算框架中,這一術語往往被稱為網路層 (network layer) 或者運算子 (operator)。
• 張量的計算操作,包括:
– 張量的數值四則運算:輸入張量,數值與四則運算子
– 張量之間的按位四則運算:輸入兩個張量與四則運算子
– 張量的按位函式運算:輸入張量與乘方函式、三角函式、冪與對數函式、大小判斷函式、隨機數生成函式、取整函式等。
– 張量的降維運算:輸入張量與滿足結合律、交換律的運算子。
– 張量之間的廣播運算:輸入張量,用維度低張量補齊維度後進行按位操作。
– 張量之間的乘法操作:以 NCHW/NHWC 張量儲存模式為例,包含張量與矩陣、矩陣與向量等張量乘法/矩陣乘法操作。
• 張量的重構操作,包括:
– 維度交換,維度擴張與維度壓縮
– 按維度排序
– 值補充
– 按通道拼接
– 沿影象平面拼接/剪裁
• 神經網路特定操作
– 全連線
– 神經網路激發函式主要依賴張量的按位函式運算的操作
– 1 維/2 維/3 維卷積(包括不同尺度卷積核、帶孔、分組等選項)
– 透過上取樣實現的 1 維/2 維/3 維反摺積操作與線性插值操作
– 通用輔助運算(如對一階/二階資訊的統計 BatchNorm)
– 影象類輔助計算(如可形變卷積網路的形變引數模組)
– 特定任務輔助計算(如 ROIPooling, ROIAlign 模組)
Cortex 的核心指令集已覆蓋主流的人工智慧計算框架操作。受制於不同平臺上 BLAS的實現,Cortex 把擁有浮點數 (Float32, Float16) 引數的 Cortex 模型透過 DevKit 轉化為定點數(INT8, INT6)引數模型 (Wu et al. [9]Han et al. [10]),從而支援跨平臺的推斷共識。
3.Cortex 模型表示工具
Cortex 模型表示工具建立了一個開放,靈活的標準,使深度學習框架和工具能夠互操作。它使使用者能夠在框架之間遷移深度學習模型,使其更容易投入生產。Cortex 模型表示工具作為一個開放式生態系統,使人工智慧更容易獲得,對不同的使用者都有價值:人工智慧開發人員可以根據不同任務選擇正確的框架,框架開發人員可以專注於創新與更新,硬體供應商可以針對性的最佳化。例如,人工智慧開發人員可以使用 PyTorch等框架訓練複雜的計算機視覺模型,並使用 CNTK 、Apache MXNet 或者 TensorFlow進行推斷。
模型表示的基礎是關於人工智慧計算的 Cortex 核心指令集的規範化。隨著人工智慧領域研究成果、軟體框架、指令集、硬體驅動、硬體形式的日益豐富,工具鏈碎片化問題逐漸突顯。很多新的論文站在前人的工作基礎上進行微創新;理論過硬的科研成果得到的模型、資料、結論並不是站在過去最佳成果之上進行進一步發展,為精度的提高帶來天花板效應;工程師為了解決特定問題而設計的硬編碼更加無法適應爆發式增長的資料。
Cortex 模型表示工具被設計為
• 表徵:將字串對映為主流神經網路模型、概率圖模型所支援的最細粒度的指令集
• 組織:將指令集對映為主流神經網路框架的程式碼
• 遷移:提供同構檢測工具,使得不同機器學習/神經網路框架中相同模型可以互相遷移
4.儲存層
Cortex 可以使用任何 key-value 儲存系統來儲存模型,可行的選擇是 IPFS 和 libtorrent。Cortex 的資料儲存抽象層並不依賴於任何具體的分散式儲存解決方案,分散式雜湊表或者 IPFS 都可以用來解決儲存問題,對於不同裝置,Cortex 採取不同策略:
• 全節點常年儲存公鏈資料模型
• 手機節點採取類似比特幣輕錢包模式,只儲存小規模的全模型
Cortex 只負責共識推斷,不儲存任何訓練集。為了幫助合約作者篩選模型,避免過擬合的資料模型難題,合約作者可以提交測試集到 Cortex 披露模型結果。
一條進入合約級別的呼叫,會在記憶體池 (Mempool) 中排隊,出塊後,將打包進入區塊確認交易。快取期間資料會廣播到包括礦池的全節點。Cortex 當前的儲存能力,能夠支援目前圖片、語音、文字、短影片等絕大部分典型應用,足以覆蓋絕大多數人工智慧問題。對於超出當前儲存限制的模型和資料,比如醫療全息掃描資料,一條就可能幾十個 GB ,將在未來 Cortex 提升儲存限制後加入支援。
對於 Cortex 的全節點,需要比現有比特幣和以太坊更大的儲存空間來儲存快取的資料測試集和資料模型。考慮到摩爾定律 (Moore’s Law),儲存裝置價格將不斷下降,因此不會構成障礙。對於每個資料模型,Metadata 內將建立標註資訊,用來進行鏈上呼叫的檢索。Metadata 的格式在表 2中表述。
5.模型索引
Cortex 儲存了所有的模型,在全節點中,對於每筆需要驗證的交易,如果智慧合約涉及共識推斷,則需要從記憶體快速檢索出對應的模型進行推斷。Cortex 的全節點記憶體將為本地儲存的模型建立索引,根據智慧合約儲存的模型地址去檢索。
6.模型快取
Cortex 的全節點儲存能力有限,無法存下全網所有模型。Cortex 引入了快取來解決這個問題,在全節點中維護一個 Model Cache 。Model Cache 資料模型的替換策略,有最近最常使用(LRU)、先進先出(FIFO)等,也可以使用任何其他方案來提高命中率。
7.全節點實驗
針對全節點執行推斷指令的吞吐情況,本章描述了一些在單機上實驗的結果。測試平臺配置為:
• CPU: E5-2683 v3
• GPU: 8x1080Ti
• 記憶體: 64 GB
• 硬碟: SSD 960 EVO 250 GB
實驗中使用的測試程式碼基於 python 2.7 和 MXNet ,其中主要包含以下模型:
• CaffeNet
• Network in Network
• SqueezeNet
• VGG16
• VGG19
• Inception v3 / BatchNorm
• ResNet-152
• ResNet101-64x4d
所有模型都可以在 MXNet 的文件 1 中找到。實驗分別在 CPU 和 GPU 中測試這些模型在平臺上的推斷速度,這些測試不考慮讀取模型的速度,所有模型會提前載入到記憶體或者視訊記憶體中。
測試結果如表 3,括號中是 Batch Size(即一次計算所傳入的資料樣本量),所有 GPU測試結果都是在單卡上的測試。
以上是單機測試的結果。為了模擬真實的情況,試驗平臺上設定 10 萬張的圖片不斷進行推斷,每次推斷選擇隨機的模型來進行並且 Batch Siz e 為 1,圖片發放到 8 張帶有負載均衡的顯示卡上。對於兩種情況:
1. 所有模型都已經讀取完畢並存放到視訊記憶體中,其單張圖片推斷的平均速度為 3.16ms。
2. 每次重新讀取資料(包括模型和輸入資料)而不是提前載入進視訊記憶體,但是進行快取,其單張圖片推斷的平均速度為 113.3 ms。
結論 全節點在模型已經預讀到視訊記憶體之後,支援負載均衡,並且將同一模型進行顯示卡間並行推斷,測試結果大約每秒能執行接近 300 次的單一推斷。如果在極端情況下不進行視訊記憶體預讀,而只是進行快取,每次重新讀取模型和輸入資料,大約每秒能進行 9 次左右的單一推斷。以上實驗都是在沒有最佳化的情況下進行的計算,Cortex 的目標之一是致力於不斷最佳化提高推斷效能。
硬體方案
1.CUDA and RoCM 方案
Cortex 的硬體方案大量採用了 NVidia 公司的 CUDA 驅動與 CUDNN 庫作為顯示卡計算的開發框架。同時,AMD OpenMI 軟體專案採用了 RoCM 驅動與 HIP/HCC 庫人工智慧研發計劃, 並計劃在 2018 年底推出後支援的開發框架。
2.FPGA 方案
FPGA 產品的特性是低位定點運算 (INT8 甚至 INT6 運算),延時較低,但是計算功耗較高,靈活性較差;在自動駕駛領域、雲服務領域已經有較好的深度學習部署方案。Cortex 計劃對 Xilinx 與 Altera 系列產品提供 Infer 支援。
3.全節點的硬體配置需求 - 多顯示卡和迴歸傳統的 USB 挖礦
不同於傳統的比特幣和以太坊全節點,Cortex 對全節點的硬體配置需求較高。需要比較大的硬碟儲存空間和多顯示卡桌面主機來達到最佳確認速度的效能,然而這並不是必需的。在比特幣領域 USB 曾經是一種即插即用的比特幣小型 ASIC 礦機,在大規模礦廠形成之前,這種去中心化的挖礦模式,曾經風靡一時,Cortex 全節點在缺少顯示卡算力的情況下可以配置類似的神經網路計算晶片或計算棒,這些裝置已經在市場上逐漸成熟。與 USB 挖礦不同的是,計算晶片是做全節點驗證的硬體補足,並非計算挖礦具體過程中需要的裝置。
4.現有顯示卡礦廠需要的硬體改裝措施
對於一個現有顯示卡算力的礦廠,特別是有高階顯示卡的礦廠,Cortex 提供改造諮詢服務和整體技術解決方案,使得礦廠具有和世界一流 AI 公司同等水平的智慧計算中心,硬體價效比將遠遠超過現有商用 GPU 雲,多中心化的礦廠有機會出售算力給演算法提供者,或者以合作的方式生成資料模型,和世界一流的網際網路、AI 公司同場競技。具體的改造策略有:
• 主機板和 CPU 的定製策略,滿足多路 PCI-E 深度學習的資料傳輸頻寬
• 萬兆交換機和網絡卡的硬體解決方案
• 儲存硬體和頻寬解決方案
• 相關軟體在挖 Cortex 主鏈、挖其他競爭顯示卡幣和鏈下深度學習訓練之間自動切換
• 相關的手機端監控收益、手動切換等管理軟體
5. 手機裝置和物聯網裝置挖礦和計算
平衡異構計算晶片 (CPU)、顯示晶片 (GPU)、FPGA 與 ASIC 計算模組的算力收益比例,從而更加去中心的進行工作量證明挖礦,一直是主鏈設計的難點,特別是能夠讓算力相對弱小的裝置,比如手機和 IoT 裝置參與其中。同時,由於目前市場上的手機裝置已經出現了支援 AI 計算的晶片或者計算庫、基於手機 AI 晶片的計算框架也可以參與智慧推斷,只不過全節點的資料模型相對較大,移動端需要定製對可執行資料模型的規模做篩選。Cortex 主鏈將釋出 Android 和 iOS 客戶端 App:
• 閒置中具有顯示卡算力的裝置能透過 SoC 、ARM 架構的 CPU/GPU 參與挖礦,比如市場中,電視盒子的顯示卡效能其實已經很不錯了,而 90% 時間基本都在閒置
• 使用者手機在上班充電和睡覺充電中都可以參與挖礦,只要演算法上讓手機的顯示卡得到公平的收益競爭力
• 手機或其他配有 AI 晶片的裝置,能夠自動在主鏈出塊和執行智慧推斷之間切換
手機端的推斷能力可能會受到晶片供應商的軟體技術限制,不同軟體供應商正在封裝不同的計算協議,Cortex 將負責抽象層介面的編寫和輕智慧客戶端的篩選。
代幣模型
1.Cortex Coin (CTXC)
模型提交者的獎勵收益
傳統的區塊鏈對於每個打包區塊的獎勵是直接支付給礦工的,Cortex 為了激勵開發者提交更加豐富和優秀的模型,呼叫合約需要支付的 Endorphin 不僅僅會分配給幫助區塊打包的節點礦工,還會支付給模型的提供者。費用的收取比例採用市場博弈價格,類似以太坊中 Gas 的機制。
模型提交者成本支出
為了防止模型提交者進行過度的提交和儲存攻擊 - 比如,隨意提交幾乎不可用的模型以及頻繁提交相同模型從而佔用儲存資源 - 每個模型提交者必須支付儲存費用。這樣可以促使模型提交者提交更加優秀的模型。這樣呼叫者更多,模型提交者收益更大。
模型複雜度和 Endorphin 的耗費
Endorphin 用來衡量在推斷過程中將資料模型帶入合約時,計算所耗費的虛擬機器級別硬體計算資源,Endorphin 的耗費正比於模型大小,同時 Cortex 也為模型的引數大小設定了 8GB 的上限,對應最多約 20 億個 Float32 的引數。
2.代幣分配
Cortex Coin (CTXC) 數量總共為 299,792,4582個。其中 60,000,000 (20.01%) 分配給早期投資者。
3 代幣發行曲線
Cortex Coin 發行總量為 299,792,458 個,其中 150,000,000 的 Cortex Coin 可以透過挖礦獲得。
第一個 4 年 75,000,000
第二個 4 年 37,500,000
第三個 4 年 18,750,000
第四個 4 年 9,375,000
第五個 4 年 4,687,500
…
依此類推,發行量按每四年減半。
交易平臺
OKEX: | Bithumb : |
火幣全球站: | CoinTiger : |
滿幣網 : | Bgogo : |
CEX : | 幣夫 : |
CoinEx: | DEx.top : |
風險提示:數字貨幣投資具有極大的風險,請在嘗試投資前確定自己承受風險的能力。