<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 十、部署 在本章中,我們將學習如何在各種平臺上部署經過訓練的模型,以實現最大吞吐量和最小延遲。 我們將了解 GPU 和 CPU 等各種硬件的性能。 我們將遵循在 Amazon Web Services,Google Cloud Platform 等平臺以及 Android,iOS 和 Tegra 等移動平臺上部署 TensorFlow 的步驟。 我們將在本章介紹以下主題: * 了解影響深度學習模型訓練和推理性能的因素 * 通過各種方法提高性能 * 查看各種硬件的基準并學習調整它們以實現最佳性能的步驟 * 將各種云平臺用于部署 * 將各種移動平臺用于部署 # 模型表現 性能對于深度學習模型的訓練和部署都很重要。 由于大數據或大模型架構,訓練通常需要更多時間。 結果模型可能更大,因此在 RAM 受限的移動設備中使用時會出現問題。 更多的計算時間導致更多的基礎架構成本。 推理時間在視頻應用中至關重要。 由于前面提到了性能的重要性,因此在本節中,我們將研究提高性能的技術。 降低模型復雜度是一個簡單的選擇,但會導致精度降低。 在這里,我們將重點介紹一些方法,這些方法可以提高性能,而準確率卻沒有明顯的下降。 在下一節中,我們將討論量化選項。 # 量化模型 深度學習模型的權重具有 32 位浮點值。 當權重量化為 8 位時,精度下降很小,因此在部署中不會注意到。 結果權重的精度似乎對深度學習模型的精度性能影響較小。 這個想法對深度學習很有趣,并且在模型大小變得至關重要時很有用。 通過用 8 位值替換 32 位浮點值,可以顯著減小模型大小并提高推理速度。 實現模型量化時有很多選擇。 權重可以存儲在 8 位中,但推理操作可以以 32 位浮點值執行。 架構的每個組件在量化大小上的行為可能有所不同,因此,取決于層,可以選擇 32 或 16 或 8 位值。 量化工作有多種原因。 通常,深度學習模型經過訓練可以解決圖像中的噪聲,因此可以被認為是健壯的。 推理計算可以具有冗余信息,并且可以由于量化而去除冗余信息。 最新的 CPU 和 RAM 硬件已針對浮點計算進行了調整,因此在此類硬件中量化效果可能不太明顯。 隨著為此目的引入越來越多的硬件,這種情況正在改變。 在 GPU 中,由于內存和速度現已適應較低的精確浮點運算,因此它們在內存和速度上存在明顯差異。 還有其他特殊硬件可用于運行不太精確的浮動操作。 # MobileNet [霍華德(Howard)和其他人](https://arxiv.org/pdf/1704.04861.pdf)引入了一種稱為 **MobileNets** 的新型模型,可用于移動和嵌入式應用。 MobileNets 可以用于不同的應用,例如對象檢測,地標識別,人臉屬性,細粒度分類,如下所示: ![](https://img.kancloud.cn/78/4c/784c288b828217223d32748e1511f102_566x222.png) 轉載自霍華德等人 MobileNets 通過用深度(**b**)和點向卷積(**c**)替換標準卷積過濾器(**a**)和點卷積(**c**)來減少模型的大小和計算量,如下所示: ![](https://img.kancloud.cn/c0/14/c014e170fe503e2a41a15433e02fba20_566x749.png) 轉載自霍華德等人 批量歸一化和激活層被添加到深度和點積卷積中,如下所示: ![](https://img.kancloud.cn/10/69/1069f9c116e38a590b75974534eca187_566x340.png) 轉載自霍華德等人 有兩個參數會影響模型的選擇: * **乘法和加法次數**:精度和多加法之間的權衡如下所示: ![](https://img.kancloud.cn/4c/b3/4cb313b67c5f91b1d923a738696dd18f_566x401.png) 轉載自霍華德等人 * **模型**中的參數數量:此處顯示權衡: ![](https://img.kancloud.cn/62/57/62570d838c435b53d8a2bfe672471cf9_566x408.png) 轉載自霍華德等人 MobileNets 已顯示,可以在移動和嵌入式設備上使用的精度有所降低的情況下,可以減少模型的計算和尺寸。 在霍華德等人的文章中可以看到模型與精度之間的確切權衡。 # 云端部署 必須將這些模型部署在云中以用于多個應用。 我們將為此目的尋找主要的云服務提供商。 # AWS Amazon Web Services(AWS)將支持擴展到基于 TensorFlow 的模型的開發和部署。 在 [Amazon](https://aws.amazon.com/) 上注冊 AWS,然后選擇 **Amazon 機器映像**(**AMI**)之一。 AMI 是安裝了所有必需軟件的計算機的映像。 您不必擔心安裝包。 **AWS 提供了深度學習 AMI**(**DLAMI**),以簡化訓練和部署深度學習模型。 有幾種選擇。 在這里,我們將使用 Conda,因為它帶有運行 TensorFlow 所需的幾個包。 Python 有兩個選項:版本 2 和版本 3。以下代碼將在 CUDA 8 的 Python 3 上使用 Keras 2 激活 TensorFlow: ```py source activate tensorflow_p36 ``` 以下代碼將在 CUDA 8 的 Python 2 上使用 Keras 2 激活 TensorFlow: ```py source activate tensorflow_p27 ``` 您可以訪問[這里](https://aws.amazon.com/tensorflow/)了解更多詳細信息和教程。 還可以通過執行以下給定的步驟來啟動**虛擬機**(**VM**): 1. 轉到 [Amazon AWS](https://aws.amazon.com/),然后使用您的 Amazon 帳戶登錄。 2. 從登錄頁面選擇虛擬機來啟動: ![](https://img.kancloud.cn/57/77/5777cf9aec268e7a45c2d78b1ba8ea61_566x199.png) 3. 在下一個窗口中,單擊入門,選擇 EC2 實例,如下所示: ![](https://img.kancloud.cn/a4/29/a42994895e08c8d1f23d50868244e025_566x622.png) 4. 為 EC2 實例命名: ![](https://img.kancloud.cn/d1/40/d1400c55573179c1c6b5bcccfe5a449f_566x200.png) 5. 選擇操作系統的類型: ![](https://img.kancloud.cn/df/98/df98b6dfc1efb77213b002035d9c74e9_566x311.png) 6. 選擇實例類型。 實例類型指示 RAM 和 CPU 大小不同的配置類型。 也有兩個選項可供選擇。 選擇實例類型,然后單擊“下一步”按鈕: ![](https://img.kancloud.cn/42/c3/42c33e1f29d541a5bd4a35be3cca1932_566x340.png) 7. 創建一個隱私增強型郵件安全證書(PEM)文件,該文件將用于登錄,如下所示: ![](https://img.kancloud.cn/97/9f/979fc92be3eaaeaa0a98d9cfdc045515_566x143.png) 8. 創建實例將花費一些時間,最后,將顯示完成狀態: ![](https://img.kancloud.cn/30/b0/30b0057423d9261e25646b478f2350f9_566x108.png) 9. 接下來,單擊進入 EC2 控制臺按鈕: ![](https://img.kancloud.cn/ab/ba/abba4c14eb1e6d1dec0fe8687fe8f0d2_532x182.png) 10. 現在將創建實例; 單擊連接按鈕,如下所示: ![](https://img.kancloud.cn/b6/8e/b68e66cbeaea7120a093c256187e36fa_566x241.png) 11. 接下來,必須將實例連接到虛擬機的命令提示符。 連接所需的說明在此步驟中給出。 您需要在之前的步驟中下載 PEM 文件。 按照顯示的說明連接到系統: ![](https://img.kancloud.cn/8e/56/8e56e0655590503560a170afe0200f74_566x435.png) 12. 完成后,通過單擊操作|實例狀態|終止來終止實例: ![](https://img.kancloud.cn/8a/69/8a695d68b9142fa2f88de302b3636c28_566x482.png) 安裝和執行步驟可以遵循第 1 章,“入門”。 # Google Cloud Platform Google Cloud Platform(GCP)是 Google 提供的云平臺,具有與 AWS 類似的功能。 通過執行以下步驟,可以使用一個簡單的虛擬機來訓練諸如 AWS 之類的模型: 1. 使用 [cloud.google.com](https://cloud.google.com/) 轉到 Google Cloud Platform,然后使用您的 Gmail 帳戶登錄到該平臺。 2. 現在,通過單擊“轉到控制臺”按鈕進入控制臺: ![](https://img.kancloud.cn/da/04/da0449ee438275a6b4b46c64cb8fbdfa_440x124.png) 3. 進入控制臺后,通過單擊**計算引擎**進入 **VM 創建頁面**。 右上角菜單中的 VM 實例,如以下屏幕截圖所示: ![](https://img.kancloud.cn/79/da/79dad45f4ad4e69c73d4929cd705ba98_359x751.png) 4. 然后單擊`CREATE INSTANCE`按鈕,以創建所需的實例: ![](https://img.kancloud.cn/80/33/8033cfb2425cfd299bf56129b38f9cb3_312x72.png) 5. 接下來,可以通過配置選擇實例類型。 Zone 參數通知區域將部署實例。 通過選擇靠近用戶的區域,可以節省等待時間。 可以使用所需的 RAM 和 CPU 定制機器類型。 還可以選擇 GPU,以進行更快的訓練。 選擇實例的大小,然后單擊“創建”按鈕,如以下屏幕截圖所示: ![](https://img.kancloud.cn/a8/0b/a80b0d827bbcfc89df06f1b5cf71a538_421x751.png) 6. 創建實例將需要幾分鐘。 然后,單擊實例的 SSH 下拉列表,然后選擇“在瀏覽器窗口中打開”選項,如下所示,以在瀏覽器中打開控制臺: ![](https://img.kancloud.cn/78/68/78689efe84bcd3a336f65dd184bb41f8_566x97.png) 使用該外殼,您可以安裝 TensorFlow 并可以訓練或部署模型。 有許多選項可從虛擬機的配置中選擇。 根據成本和時間的權衡,可以選擇配置。 GCP 具有**云機器學習引擎**,可在使用 TensorFlow 時為我們提供幫助。 GCP 的三個組件可以一起用于構建訓練和部署基礎架構: 1. 用于預處理圖像的 Cloud DataFlow 2. 用于訓練和部署模型的云機器學習引擎 3. 用于存儲訓練數據,代碼和結果的 Google Cloud Storage 可以在[這個頁面](https://cloud.google.com/ml-engine/docs/flowers-tutorial)上找到使用云機器學習引擎建立自定義圖像分類模型的出色教程。 # 在設備中部署模型 TensorFlow 模型也可以部署在移動設備中。 移動設備包括智能手機,無人機,家用機器人等。 數十億智能手機可以具有可以使用深度學習的計算機視覺應用。 可以拍照并搜索,流化帶有標記場景的視頻等。 在移動設備中進行部署意味著深度學習模型存在于設備上,并且推斷發生在設備上。 設備上部署的模型有助于解決隱私問題。 在以下主題中,我們將討論如何在各種移動平臺上部署它們。 # Jetson TX2 Jetson TX2 是由 NVIDIA 提供的嵌入式設備,專門用于高效 AI 計算。 Jetson TX2 輕巧,緊湊,因此適合在無人機,公共場所等中部署。 它還附帶預裝的 TensorRT,這是 TensorFlow 的運行時。 您可以購買 Jetson 并在安裝 TensorFlow 之前快速安裝 Ubuntu,CUDA,CUDNN。 克隆[這個頁面](https://github.com/jetsonhacks/installTensorFlowTX2),然后在命令提示符下輸入以下命令。 1. 首先,在以下代碼的幫助下安裝必備組件: ```py ./installPrerequisites.sh ``` 2. 現在,使用以下代碼克隆 TensorFlow: ```py ./cloneTensorFlow.sh ``` 3. 接下來,使用以下代碼設置所需的環境變量: ```py ./setTensorFlowEV.sh ``` 4. 現在我們將使用以下代碼構建 TensorFlow : ```py ./buildTensorFlow.sh ``` 5. 現在,我們將使用以下代碼將打包文件處理為 Wheel 文件: ```py ./packageTensorFlow.sh ``` 6. 現在,我們將使用以下代碼安裝 Tensorflow: ```py pip install $HOME/tensorflow-1.0.1-cp27-cp27mu-linux_aarch64.whl ``` 借助這些步驟,我們可以在 Jetson TX2 中安裝 TensorFlow。 # 安卓 任何 Android 應用都可以使用 TensorFlow,其構建細節可以在[這個頁面](https://www.tensorflow.org/mobile/android_build)中找到。 關于此的官方示例可以在[這個頁面](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android)中找到。 假設讀者具有 Android 編程經驗,則在 Android 設備中實現 Tensorflow 的步驟如下: 1. 使用第 3 章“圖像檢索”中介紹的步驟,將 TensorFlow 模型導出到`.pb`文件。 2. 生成二進制文件`.so`和`.jar`。 3. 編輯`gradle`文件以啟用庫加載。 4. 加載并運行 Android 應用文件 # iPhone 蘋果使用 CoreML 框架將機器學習集成到 iPhone 應用中。 Apple 提供了可以直接集成到應用中的標準模型列表。 您可以使用 TensorFlow 訓練自定義深度學習模型并將其在 iPhone 中使用。 為了部署自定義模型,您必須在 CoreML 框架模型中隱藏 TensorFlow。 谷歌發布了 [tf-coreml](https://github.com/tf-coreml/tf-coreml),用于將 TensorFlow 模型轉換為 CoreML 模型。 可以使用以下代碼安裝 TFcoreML: ```py pip install -U tfcoreml ``` 可以使用以下代碼導出模型: ```py import tfcoreml as tf_converter tf_converter.convert(tf_model_path='tf_model_path.pb', mlmodel_path='mlmodel_path.mlmodel', output_feature_names=['softmax:0'], input_name_shape_dict={'input:0': [1, 227, 227, 3]}) ``` iPhone 可以使用導出的模型進行預測。 # 總結 在本章中,我們了解了如何在各種平臺和設備上部署經過訓練的深度學習模型。 我們已經介紹了為這些平臺獲得最佳性能的步驟和準則。 我們已經看到了 MobileNets 的優勢,它以很小的精度權衡來減少推理時間。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看