通過Python 執行複雜的PYNQ 框架方案

2020-12-23 電子發燒友

作者:Giulio Corradi 博士

賽靈思® PYNQ 框架能在 Zynq® 產品系列中實現對Python 語言及運行時的全面支持與集成。直接在 Zynq SoC 架構上利用 Python 的生產力優勢,用戶能夠充分發揮可編程邏輯和微處理器的長處,更容易為人工智慧、機器學習和信息技術應用構建設計。

摘要
從工程設計、科研、數據科學、機器學習、信息技術到人工智慧,Python 開源程式語言已經成為各類應用中的不成文標準。

當在嵌入式應用中使用現代片上系統 (SoC) 時,就能夠運行 Python 執行複雜的分析算法,其性能接近臺式機工作站,但外形尺寸顯著縮小,功耗要求也顯著降低。通過預處理從傳感器讀取的數據,賽靈思® Zynq 產品系列大幅度提高性能和確定性,同時降低時延。

這種被稱為 PYNQ 框架方案,能從應用處理器有效卸載不必要佔用處理器帶寬的大量重要但重複的操作。這種卸載功能對於滿足工業物聯網中邊緣應用提高的智能需求有重要意義。

嵌入式計算的新範例
近期的 IEEE 調查報告稱 2017 年最流行的兩種程式語言分別是 Python 和 C 語言。在嵌入式計算領域,C 語言一直以來都是中堅力量。傳統上來說,我們一直將 Python 語言用於網絡或臺式機計算,而從未用作嵌入式計算語言;但是這種情況正在發生改變。

Python 及其相關框架能支持用於數據分析、機器學習(ML)和人工智慧(AI)應用的複雜算法的開發。當然,這些應用屬於嵌入式計算領域的熱點話題,而且它們正在促使 Python 得到採用,特別是在邊緣工業物聯網 (IIoT) 領域的普及。

C、C++ 和 Python 緊密相連,因為 Python 本身也依賴 C 和 C++ 用來提供最核心的庫。但是,C 和C++ 屬於編譯型語言,能夠在裸機上執行。Python 在這點上則與之不同,是一種解釋型語言。這種差異在嵌入式計算中為自身帶來了挑戰:例如,Python 需要作業系統(一般是Linux),另外還需要易失性和非易失性存儲器資源。

在工業物聯網邊緣嵌入式計算領域,ML 和 AI 的實現日趨傾向於發揮數字孿生體 (1) 與物理致動器的功用。因此,解決方案必須能夠實時以低確定性時延做出響應。此外,工業物聯網解決方案也必須能夠支持其他行業趨勢,例如:
• 根據待解決問題在實時處理器、應用處理器和專用處理單元間進行分區
• 為專用處理器卸載引擎創建接口,從而為性能關鍵內核提速
• 使用 Linux 等標準作業系統
• 提供具備調度功能和確定性的解決方案
• 為原型設計和生產提供高生產力框架
• 覆蓋標準和傳統網絡通信接口與協議,包括 IT、OT 融合網絡。
• 為機器學習和分析提供豐富的庫
• 功能安全性
• 網絡安全

構建工業物聯網平臺絕非易事。從物理環境的邊緣到雲(包括 AI 和 ML)的整個鏈條是複雜的,並需要多種專業能力。因此,開發工業物聯網就要求使用更高水平的抽象,而這種抽象水平又要與項目涉及的不同工作職能相關聯,才能讓開發在可接受的時間預算和成本預算內完成。參見圖 1。

圖 1:同一平臺的不同抽象水平

在工業物聯網中探索機器學習
工業物聯網解決方案越來越多地在邊緣納入嵌入式智能。對於眾多應用而言,這意味著機器學習推斷的實現。實現後,ML 算法會利用其經驗,根據一套輸入數據得出結論。在 ML 中,經驗可通過名為培訓的學習過程來獲得。ML 應用的培訓可使用下列兩種方法之一執行:(1) 人工監督或 (2) 實現判斷功能。兩種方法都需要將由正反例構成的大數據集應用於 ML 網絡。在 ML 算法得到充分培訓後,就能將其部署在工業物聯網邊緣,根據新輸入和未知輸入進行推斷。

工業物聯網解決方案應用從 ML 的使用中獲益匪淺,尤其是對於那些傳統方法不能提供可接受的性能的應用或者需要大量人工幹預的應用,例如再校準、維護、診斷和故障安全保護操作。這些應用具體包括:
• 傳感器與測量系統
• 系統識別
• 機器學習系統控制
• 高級信號處理
• 自主系統的強化學習
• 圖像處理

因此,開發 ML 解決方案需要具備有足夠通用性的平臺和生態系統,才能支持完整的開發模型,而不僅僅支持解決方案的獨立單元。

PYNQ 框架
賽靈思 Zynq-7000 SoC 包含用來為現代 SoC 提供不成文標準特性的雙核 Arm® Cortex®-A9 處理器系統 (PS) 和可編程邏輯 (PL),同時它還提供獨特的高度差異化靈活性,支持將關鍵任務卸載到PL 。Zynq UltraScale+ MPSoC 和 Zynq UltraScale+ RFSoC 使用四核 Arm Cortex-A53 PS、PL 和其他特定部件型號的處理塊進一步擴展這一模型。

PS 和 PL 間的緊密耦合能實現比傳統方法響應性更好、可重配置性更強、能效更高的系統。基於 CPU 的傳統方法需要使用外部存儲器來共享鏡像等大型數據結構。因為需要片外仲裁和通信,這樣做會降低確定性並增大功耗與時延,Zynq 產品系列中提供的異構片上系統器件允許設計人員在器件的 PL 內為功能提速。這樣,提供的解決方案不僅擁有確定性響應時間,還能降低時延,優化功耗。參見圖 2。

圖 2:與典型 SoC 相比 Zynq 產品系列的優勢

使用 PL 能提供比傳統 CPU 方法更豐富的接口功能,因為後者只提供固定接口。PL I/O 結構的靈活性可支持業界標準、專有或傳統接口,從而實現任意連接。

在高級綜合工具 SDSoC™ 和 Vivado® HLS 的幫助下,開發人員能夠把 C 和 C++ 編譯代碼直接轉化為硬體。

結合可編程邏輯中功能的加速,還能夠實例化一個或更多的 MicroBlaze™ 32 位軟核處理器。MicroBlaze 核允許執行實時關鍵應用。這些功能讓 Zynq 產品系列可用來滿足支持 Python的嵌入式平臺的所有要求。

PYNQ 框架支持 Python 能與 Zynq 產品系列一起使用,可充分發揮可編程邏輯提供的加速功能。為實現這一點,PYNQ 採用了將 PL 疊加封裝成混合庫的方式。

混合庫是一種全新形式的庫,包含疊加比特流和與之相關視硬體而定的 C 代碼和 Python API。混合庫是實現重複使用的關鍵機制,使用 PIP Install(用於安裝和管理使用 Python 編寫的軟體包的封裝管理系統)就能輕鬆安裝。

因此,PYNQ 框架為數據科學家、嵌入式工程師、硬體工程師和系統工程師等所有開發人員提供了所需的必要抽象層次。參見圖 3。

圖 3:PYNQ 框架中不斷提高的抽象水平

PYNQ 框架率先結合下列要素,能簡化和改進基於 Zynq 產品系列的設計:
• 高層次生產力語言 (Python)
• 在可編程邏輯內實現加速的混合庫
• 受嵌入式處理器支持的基於 Web 的架構
• Jupyter Notebook 框架

與不能使用可編程邏輯的傳統 SoC 方法相比,依託這些要素的 PYNQ 框架擁有顯著優勢。

數據科學家能立刻把由賽靈思用熟悉的封裝在 Python 框架裡創建的系統投入使用。圖 3 展示了可以使用一些標準封裝的堆棧。Panda、Scikit-learn 和 NumPy 位於頂層,其他封裝則提供專門功能,比如用於機器人的 ROS 和用於仿真的 SimPy。

Python 能夠導入一個或多個隨時可用的預配置硬體模塊,為應用加速並消除瓶頸。所有封裝都能在Jupyter 環境中進行嘗試和使用,並可使用基於 FPGA 疊加的硬體庫接口連接到可編程邏輯。

PYNQ 框架是圍繞開源社區設計的,開發人員在該社區可以創建和共享疊加。使用這種方法,開發人員在確認需要新疊加之前不需要構建疊加。也就是說,在運行所需功能的疊加不存在時才需要構建它。每個新疊加都應嚴格遵循為工業物聯網確立的「設計模式」。這些設計模式包括(但不僅限於)下列模式:

加速器為計算提速-與主處理器共享和/或交換數據。根據數據大小和性能要求,數據交換可以在PL 存儲器內(塊 RAM)、片上存儲器內 (COM)、L2 高速緩存內和 DDR 存儲器內進行。

日誌記錄器負責採集數據,一般是與主處理器共享的原始數據。根據數據大小和性能要求,日誌記錄可以在 PL 存儲器內(塊 RAM)、片上存儲器內 (COM)、L2 高速緩存內和 DDR 存儲器內進行。採集過程可以通過明確觸發來自主處理器的事件或通過捕獲外部事件來啟動。

定序器生成邏輯值的自動序列;根據複雜程度,這其中可包含用於實現布爾函數、FSM 和/或仲裁數字模式的可編程生成器實例。

運行器提供可用 C/C++ 語言進行編程的基於 MicroBlaze 32 位軟核處理器的實時控制功能,用於從主處理器卸載重複性任務以確保確定性。

可以把運行器用作安全模塊。可配置 MicroBlaze 處理器用於鎖步操作。雖然整個 Zynq 產品系列都針對功能安全性進行了精心設計,但當產品從最初的原型設計進入到可生產階段時,這一功能尤為重要。

傳感器與測量系統
傳感器是任何工業系統,尤其是工業物聯網解決方案的關鍵組成部分。從簡單的溫度測量熱電偶,到結合多個異構傳感器的用來測量特定物理量的複雜傳感器融合,工業物聯網解決方案採用多種不同的傳感器模態。在工業物聯網解決方案中實現 ML,有助於開發人員讓給定傳感器發揮出最佳性能,同時提高下列操作的效率:
• 傳感器數據採集(例如:振動分析)
• 傳感器數據標準化
• 傳感器線性化
• 傳感器診斷
• 高級傳感器
• 傳感器融合
• 校準與自校準

傳感器診斷
因為老化原因,傳感器性能在整個工作壽命期間會發生變化。傳感器在惡劣環境中使用時尤其如此,此時老化會影響可靠性,並帶來偏離和偏差問題。此外,如果將傳感器用於安全應用,傳感器診斷功能同樣極為有用;在此情況下,正確的診斷流程也是安全系統的組成部分。

通過使用 ML,設計人員能夠創建傳感器模型,或更為普遍的說法,即數字孿生,在持續監控實際傳感器輸出的同時預測傳感器輸出。在額定條件下,傳感器信號遵循某種已知模式,且伴隨系統與測量噪聲導致的一定程度的不確定性。但是,如果傳感器失效,觀察到的輸出就會與預測輸出相左,並且當偏差越過指定時序或閾值時,就可以明確聲明傳感器失效。由於分析冗餘技術允許使用工作在額定條件下的傳感器提供的信息為動態系統創建模型,因此「數字孿生」不會老化或失效,會永久存續。

預測性維護用例:用於診斷與安全的滾珠軸承故障檢測
封裝材料行業已經認識到「全面生產維護」作為提高設備可靠性的積極方法體系的重要意義。逐漸發生的軸承失效是行業故障最主要的原因之一。因此,儘早地檢測這些故障對確保可靠高效的運營而言至關重要。單個包裝機往往就裝有 8 部以上的電動機和眾多主軸,存在可能導致生產線停運的多個故障源。

滾珠軸承能確保軸以最小摩擦自由轉動,同時讓軸保持在正確位置上。如果旋轉系統的滾珠軸承失效,後果將不堪設想。造成軸承受損的原因有很多,包括:
• 軸承錯位
• 微動磨損,對軸承接觸面的一種侵蝕性破壞
• 變頻驅動,產生導致點蝕、槽蝕和弧坑的軸電流
• 軸承潤滑不當
• 軸承侵蝕
• 軸承疲勞
• 高溫和其他因素

在故障發生之前檢測此類故障,對於降低運營成本和維護成本而言有極為重要的意義。幸運的是,低成本加速計的問世提供高帶寬測量,能支持功能極為強大的振動數據採集系統。將這些加速計與先進的電動機控制功能共同部署,便可基於 PYNQ 框架實現偵測系統,實時檢測可能的失效。

對於本應用而言,PYNQ 架構部署在 ARTY-Z7 電路板上。該電路板支持基於 PYNQ 的疊加,但這隻僅僅是 PYNQ 框架的可能的用途之一。在本例中,系統設置包含一個高性能電動機控制系統和一個由 5 個 Kionix(1) 三軸加速計構成的採集系統。

可以使用多種技術進行振動監測,其中包括振動測量、聲學測量、溫度測量和磨損分析。使用矽微加速計為感應全部三個軸向的振動提供了低成本的方法,從而能夠全面掌握系統中發生的所有可能的振動模式。具體如圖 4所示。

為了確保測量準確,加速計位置應貼近電動機、齒輪箱和主滑輪內的滾珠軸承。

電動機電流、定子電壓和軸角度位置等系統參數均在監測範圍內。將電動機模型用於估算角度和內部電壓。

圖 4:故障檢測與電動機控制

如圖 5 所示,使用下列單元為 PYNQ 環境創建了新的疊加:
• 電動機控制系統:實例化為使用 QDESYS(www.qdesys.com)高性能電動機控制 IP 集的HDL 塊。
• 日誌記錄器:實例化為 Vivado HLS 模塊,並連接高性能 AXI 總線 0。
• 即時高速傅立葉轉換 (FFT):實例化為 Vivado HLS 模塊,並連接高性能 AXI 總線 0。
• 運行器:用於解耦和管理加速度計,採用 MicroBlaze 軟核處理器實現並以 DDR 存儲器內共享段的形式對外提供。MicroBlaze 處理器:從 ARM 處理器分擔加速度計管理工作。I2C 協議對這些單元進行區別對待,分別補償偏置、靈敏度、溫度和比率誤差。

圖 5:捕獲與電動機控制內部模塊

為實現能與 PYNQ 框架配合的新疊加,使用了Python C 外部函數接口 (CFFI)。在使用 Python 時,該接口支持與幾乎任何 C 代碼進行交互。可編程邏輯加速功能置於 PYNQ 框架內,並且可以訪問該框架下基於 C/C++ 的軟體驅動程序。PYNQ 框架也提供在開發應用時有所幫助的補充功能。PYNQ 的兩大核心功能包括:
(a) mmio:用於實現存儲器映射 I/O,以及 xlnk:將 DDR 存儲器分配為 NumPy(使用 Python開展科學計算的基本庫)可見的緩存空間。xlnk 負責為 PL(用於映射登記的向量)獲取虛擬地址和物理地址。

舉個簡單的例子,可以藉助觀察通過電動機的電流,來建立加速度計輸出的振動信號與檢測到的振動信號間的關聯關係,因此開展傳統的振動分析或是更先進的信號特徵分析就可以建立這一關聯。

具體指標及整體系統的描述將佔盡單獨一本白皮書的篇幅,故不在本白皮書中詳述。作為展示,圖 6體現了超過閾值的滾珠軸承頻率限值信號由圖 7 中看似正常的電流波形中提取的。

圖 6:使用電流信號特徵的振動分析

圖 7:三相電動機的波形(滾珠軸承信號特徵被噪聲淹沒)

上述示例證明,只要正確理解了問題和 Zynq 產品系列特性,就能開展切實的高級診斷,為具備機器學習功能的工業物聯網系統敞開通向更智能方法的大門。

結論
本白皮書僅涵蓋 PYNQ 框架的一些基礎知識,該框架將 Python 與 Zynq 組合結合為一體。PYNQ 框架提供了新的切實可能性,有助於打造能夠充分利用工業物聯網全部功能,以及機器學習提供的新興功能的系統。

邊緣計算機器學習的發展尚處於萌芽階段,而賽靈思致力於交付一流的產品和設計框架,以加快和簡化智能和自適應資產的設計、部署與維護。這僅僅是動人旅程的開端,本白皮書中提及的許多話題將在後續的白皮書、應用說明和示例中詳細介紹。其中一部分已經在 PYNQ GitHub 庫裡提供。

入門
• PYNQ 框架見 http://www.pynq.io 。
• 本白皮書裡介紹的Arty Z7 板系由 Digilent 公司提供,見:store.digilentinc.com/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists/
• 含 Arty Z7 板、用於電動機控制的電源模塊以及 BLDC 電動機的套件見:https://shop.trenzelectronic.de/en/TEC0053-04-K1-EDDP-Motor-Control-Kit- with-Motor-Power-Supplies

編輯:hfy

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 雲立方網科普:常用高效的Python爬蟲框架有哪些?
    Python是現在非常流行的程式語言,而爬蟲則是Python語言中最典型的應用,下面是總結的高效Python爬蟲框架,大家看看是否都用過呢。
  • python開發web服務 bottle框架
    開發功能不是特別複雜的web服務,可以考慮使用bottle框架。原因:一、Python開發效率高呀!不信你比比同樣的功能Python幾行可以搞定?換java試試?換C++試試?作為這幾種語言都使用過的我來說,用過java就儘量不用C++,用過Python就儘量不用java,真的不堪回首。
  • Python語言基本語法元素之格式框架:注釋、縮進、續行符
    筆者希望自己對python編程知識的加工處理,能對讀者產生作用。這次寫些基礎概念,Python語言基本語法元素。注釋,會被計算機忽略,你寫代碼的時候,可以通過注釋表明作者和版權資訊,或者解釋代碼原理及用途。注釋也可以理解為程序編寫者對程序代碼的一種標記,這樣以後翻看代碼,通過標記可以迅速理解代碼。然後兩個圖都有部分灰色的代碼,以#號為起始,這些#號開始的灰色文字也屬於注釋。
  • 34個最優秀好用的Python開源框架
    人工智慧和深度學習的熱潮極大的帶動了Python的發展,迅速在Python生態圈中催生了大批的涉及各個方面的優秀Python開源框架,今天小編就帶你回顧下2018年度最優秀好用的Python開源框架。下面是從2018年中近10000個python開源框架中評價整理的34個最為好用的開源框架,它們細分可以分為Python Toolkit、Web、Terminal、Code Editor、Debugging、complier、Data Related、Chart8類,分布情況如下圖:Python ToolKit
  • VPF:適用於 Python 的開源視頻處理框架,加速視頻任務、提高 GPU...
    雷鋒網 AI 開發者按:近日,NVIDIA 開源了適用於 Python 的視頻處理框架「VideoProcessingFramework(VPF)」。該框架為開發人員提供了一個簡單但功能強大的 Python 工具,可用於硬體加速的視頻編碼、解碼和處理類等任務。
  • 從4個月到7天,Netflix開源Python框架Metaflow有何提升性能的魔法?
    作者 | Rupert Thomas譯者 | 凱隱編輯 | Jane出品 | AI科技大本營(ID:rgznai100)【導語】Metaflow 是由 Netflix 開發,用在數據科學領域的 Python框架
  • java大數據和python大數據的全面對比,哪個更主流?
    未來大數據是對於一家企業有多重要,通過對數據的分析,可以了解市場需求、發展方向,對公司未來的定位,把數量龐大、不規整的數據信息進行梳理,總結出可供查詢的特徵。在一種常見的場景下是要命的:並發單元之間有巨大的數據共享或者共用(例如大dict),多進程會導致內存吃緊,多線程則解決不了數據共享的問題,單獨的寫一個進程之間負責維護讀寫這個數據不僅效率不高而且麻煩2、python執行效率不高,在處理大數據的時候,效率不高,這是真的,pypy(一個jit的python解釋器,可以理解成腳本語言加速執行的東西)能夠提高很大的速度
  • 第一個python程序 helloworld
    目標第一個python程序 hellworld程序python2和pythn3的區別執行python的三種方法源程序的概念1.1 python源碼是一個特殊的文本文件,可以用任何文本編譯器編輯1.2後輟後通常是.py文件2.程序的演練在桌面上新建 一個 目錄 python在python
  • 微軟最強 Python 自動化工具開源了!不用寫一行代碼!
    前言 最近,微軟開源了一款非常強大的 Python 自動化依賴庫:playwright-python 它支持主流的瀏覽器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同時支持以無頭模式、有頭模式運行 playwright-python 提供了同步、異步的
  • Python如何打包成可執行程序exe
    Python是一種腳本語言,在開發完程序後,都要用python yourprogram.py來執行程序,這對於熟悉Windows作業系統的人來說,這時不可接受的,尤其是當用類似PyQt做出圖形界面時,如果還需要cmd時,簡直會有不再學習Python的衝動。
  • 數據分析:R與Python怎麼選?
    以下羅列R和python在各數據工作領域的資料信息,看看它們都有啥?Python這樣的優勢還體現在網絡爬蟲領域,尤其是研發人員在進行一些比較複雜的爬蟲任務時,Python會有更多的資源,包含方法和套件。除此之外,在計算效率、計算穩定性等方面兩者並無顯著差異。在統計分析領域,R的綜合表現更優於Python。R最早是統計學家為統計工作所開發的工具,他們甚至通過R代碼和程序來交流分析思想,許多比較複雜的統計模型和統計檢驗方法在R上都可以比較輕鬆的實現。
  • python爬蟲資源匯總 : 書單、網站博客、框架、工具、項目(附資源)
    網址:proxyhttp.net/check- 項目上手 -作為一門技術,知曉了方法,想要掌握的秘訣就是訓練,那麼通過項目來練手就非常重要了。既然書讀百遍奇異自現,那爬蟲百遍,相信你也能找到爬蟲的通用套路和技巧。
  • DeepMind悄咪咪開源三大新框架,深度強化學習落地希望再現
    儘管取得了很多進展,但由於缺乏工具和庫,DRL 方法仍難以應用於主流的解決方案。因此,DRL 主要以研究形式存在,並未在現實世界的機器學習解決方案中得到大量應用。解決這個問題需要更好的工具和框架。而在當前的 AI 領域,DeepMind 在推動 DRL 研發方面做了大量工作,包括構建了許多專有工具和框架,以大規模地簡化 DRL agent 訓練、實驗和管理。
  • Python多階段框架實現虛擬試衣間,超逼真
    故在論文《Downto the Last Detail: Virtual Try-on with Detail Carving》中提出了一種新的多階段合成框架,可以很好地保留圖像顯著區域的豐富細節。具體地說,就是提出了一個多階段的框架,將生成分解為空間對齊,然後由粗到細生成。
  • 寫Python爬蟲不可不理解隊列Queue
    Queue是python標準庫中的線程安全的隊列(FIFO)實現,提供了一個適用於多線程編程的先進先出的數據結構,即隊列,用來在生產者和消費者線程之間的信息傳遞
  • python迭代器和生成器總結——新的斐波那契數列
    python迭代器題目:給定一個序列,循環輸出序列中的每個元素。通過一個for循環就可以實現,如下:for循環遍歷結果事實上,python中,提供了另一個工具來幫助遍歷,該工具稱之為迭代器。可以通過iter函數來獲取一個迭代器,通過next函數來獲取下一個元素。
  • Python 內置的隊列 Queue
    Python 內置的隊列 Queue在 python 的眾多標準庫中,有一個 Queue
  • 如何輕鬆了解 Python 必學的 django 框架?
    django 框架配有一個功能強大的管理站點,裡面已經預定義了許多管理站點需要進行的操作,但是有時可能默認的操作不能滿足需求,如需要批量更新選中的對象,這需要編寫自定義 action 實現。本文基於 django 官方英文文檔梳理了一下自定義管理操作需要做的工作,方便快速了解自定義管理操作的實現過程。
  • Cve-maker是一個python工具,用於在當前或遠程計算機上檢測,查找,編譯和執行CVE.
    正文:Cve-maker是一個python工具,用於在當前或遠程計算機上檢測,查找,編譯和執行CVE。檢測:但不會顯示所有可能的CVE:必須手動找到兩個版本之間的CVE(例如Linux Kernel 2.6.10 <2.6.31)研究:通過輸入關鍵字搜索您的CVE!
  • python開發環境搭建總結和helloword
    python開發語言的熱度持續不減,很多小夥伴們都在摸索著前進。今天,我們就從python開發環境搭建開始聊起。幫助大家快速進入python學習狀態。Python下載直接從python官網,下載適合操作的系統的安裝包。