Hugging Face 推理端點入門

釋出於 2022 年 10 月 14 日
在 GitHub 上更新

訓練機器學習模型已經變得相當簡單,特別是隨著預訓練模型和遷移學習的興起。好吧,有時它並沒有那麼簡單,但至少,訓練模型永遠不會破壞關鍵應用程式,也不會讓客戶對你的服務質量感到不滿。然而,部署模型……是的,我們都經歷過。

在生產環境中部署模型通常需要經歷一系列繁瑣的步驟。將你的模型打包到容器中、配置基礎設施、建立預測 API、保障其安全、進行擴充套件、監控等等。讓我們面對現實吧:構建所有這些基礎設施會佔用寶貴的時間,而這些時間本可以用於真正的機器學習工作。不幸的是,這個過程也可能出錯得一塌糊塗。

我們致力於透過新推出的 Hugging Face 推理端點來解決這個問題。本著在不犧牲最先進質量的前提下使機器學習變得更簡單的精神,我們構建了一項服務,讓您只需點選幾下,就可以直接從 Hugging Face Hub 將機器學習模型部署到您喜歡的雲平臺上的託管基礎設施中。簡單、安全、可擴充套件:您可以擁有一切。

讓我來告訴你這是如何工作的!

在推理端點上部署模型

檢視推理端點支援的任務列表後,我決定部署一個 Swin 影像分類模型,這是我最近使用 AutoTrainfood101 資料集上微調的。如果你對我是如何構建這個模型感興趣,這個影片將向你展示整個過程。

從我的模型頁面開始,我點選“部署(Deploy)”,然後選擇“推理端點(Inference Endpoints)”。

這會直接將我帶到端點建立頁面。

我決定將我的模型的最新版本部署在 AWS 的 `eu-west-1` 區域的單個 GPU 例項上。作為可選項,我還可以設定自動縮放,甚至可以將模型部署在自定義容器中。

接下來,我需要決定誰可以訪問我的端點。從最不安全到最安全,有三個選項:

  • 公開(Public):端點在公共的 Hugging Face 子網中執行,網際網路上的任何人都可以無需任何身份驗證地訪問它。選擇這個選項前請三思!
  • 受保護(Protected):端點在公共的 Hugging Face 子網中執行,網際網路上任何擁有相應組織令牌的人都可以訪問它。
  • 私有(Private):端點在私有的 Hugging Face 子網中執行。它在網際網路上無法訪問。它只能透過使用 AWS PrivateLink 建立的 VPC 端點在你的 AWS 賬戶中可用。你可以控制你的 AWS 賬戶中的哪個 VPC 和子網可以訪問該端點。

讓我們先部署一個受保護的端點,然後再部署一個私有的。

部署受保護的推理端點

我只需選擇“受保護(Protected)”,然後點選“建立端點(Create Endpoint)”。

幾分鐘後,端點就啟動並運行了,其 URL 也可見了。

我可以立即在推理小部件中上傳一張圖片來測試它。

當然,我也可以用幾行 Python 程式碼直接呼叫端點,並使用我的 Hugging Face API 令牌進行身份驗證(你可以在 Hub 的賬戶設定中找到你的令牌)。

import requests, json

API_URL = "https://oncm9ojdmjwesag2.eu-west-1.aws.endpoints.huggingface.cloud"

headers = {
  "Authorization": "Bearer MY_API_TOKEN",
  "Content-Type": "image/jpg"
}

def query(filename):
    with open(filename, "rb") as f:
        data = f.read()
    response = requests.request("POST", API_URL, headers=headers, data=data)
    return json.loads(response.content.decode("utf-8"))

output = query("food.jpg")

如你所料,預測結果是相同的。

[{'score': 0.9998438358306885,    'label': 'hummus'},
 {'score': 6.674625183222815e-05, 'label': 'falafel'}, 
 {'score': 6.490697160188574e-06, 'label': 'escargots'}, 
 {'score': 5.776922080258373e-06, 'label': 'deviled_eggs'}, 
 {'score': 5.492902801051969e-06, 'label': 'shrimp_and_grits'}]

轉到“分析(Analytics)”選項卡,我可以看到端點指標。我的一些請求失敗了,因為我故意省略了 `Content-Type` 標頭。

要獲取更多詳細資訊,我可以在“日誌(Logs)”選項卡中檢視完整的日誌。

5c7fbb4485cd8w7 2022-10-10T08:19:04.915Z 2022-10-10 08:19:04,915 | INFO | POST / | Duration: 142.76 ms
5c7fbb4485cd8w7 2022-10-10T08:19:05.860Z 2022-10-10 08:19:05,860 | INFO | POST / | Duration: 148.06 ms
5c7fbb4485cd8w7 2022-10-10T09:21:39.251Z 2022-10-10 09:21:39,250 | ERROR | Content type "None" not supported. Supported content types are: application/json, text/csv, text/plain, image/png, image/jpeg, image/jpg, image/tiff, image/bmp, image/gif, image/webp, image/x-image, audio/x-flac, audio/flac, audio/mpeg, audio/wave, audio/wav, audio/x-wav, audio/ogg, audio/x-audio, audio/webm, audio/webm;codecs=opus
5c7fbb4485cd8w7 2022-10-10T09:21:44.114Z 2022-10-10 09:21:44,114 | ERROR | Content type "None" not supported. Supported content types are: application/json, text/csv, text/plain, image/png, image/jpeg, image/jpg, image/tiff, image/bmp, image/gif, image/webp, image/x-image, audio/x-flac, audio/flac, audio/mpeg, audio/wave, audio/wav, audio/x-wav, audio/ogg, audio/x-audio, audio/webm, audio/webm;codecs=opus

現在,讓我們提高安全級別,部署一個私有端點。

部署私有推理端點

重複上述步驟,這次我選擇“私有(Private)”。

這會開啟一個新的框,要求我輸入端點將可見的 AWS 賬戶的識別符號。我輸入相應的 ID,然後點選“建立端點(Create Endpoint)”。

不確定你的 AWS 賬戶 ID?這裡有一行 AWS CLI 命令可以幫你:`aws sts get-caller-identity --query Account --output text`

幾分鐘後,推理端點使用者介面顯示了 VPC 服務名稱。我的是 `com.amazonaws.vpce.eu-west-1.vpce-svc-07a49a19a427abad7`。

接下來,我開啟 AWS 控制檯,進入 VPC 端點頁面。然後,我點選“建立端點(Create endpoint)”來建立一個 VPC 端點,這將使我的 AWS 賬戶能夠透過 AWS PrivateLink 訪問我的推理端點。

簡而言之,我需要填寫上面顯示的 VPC 服務名稱,選擇允許訪問該端點的 VPC 和子網,並附加一個合適的安全組。沒什麼可怕的:我只需按照推理端點文件中列出的步驟操作即可。

一旦我建立了 VPC 端點,我的設定看起來就像這樣。

回到推理端點使用者介面,一兩分鐘後,私有端點就執行起來了。讓我們來測試一下!

在允許訪問 VPC 端點的某個子網中啟動一個 Amazon EC2 例項,我使用推理端點 URL 來預測我的測試影像。

curl https://oncm9ojdmjwesag2.eu-west-1.aws.endpoints.huggingface.cloud \
-X POST --data-binary '@food.jpg' \
-H "Authorization: Bearer MY_API_TOKEN" \
-H "Content-Type: image/jpeg"

[{"score":0.9998466968536377,     "label":"hummus"},
 {"score":0.00006414744711946696, "label":"falafel"},
 {"score":6.4065129663504194e-6,  "label":"escargots"},
 {"score":5.819705165777123e-6,   "label":"deviled_eggs"},
 {"score":5.532585873879725e-6,   "label":"shrimp_and_grits"}]

就是這麼簡單。測試完成後,我刪除了我建立的端點以避免不必要的費用。我還在 AWS 控制檯中刪除了 VPC 端點。

Hugging Face 的客戶已經在使用推理端點。例如,排名第一的內部慢性病護理管理和主動護理平臺 Phamily 告訴我們,推理端點正在幫助他們簡化和加速符合 HIPAA 標準的 Transformer 部署。

現在輪到你了!

感謝推理端點,你可以在幾分鐘內,僅需幾次點選,就能部署生產級的、可擴充套件的、安全的端點。何不親手一試呢?

我們有很多想法來讓這項服務變得更好,並希望在 Hugging Face 論壇上聽到你的反饋。

感謝您的閱讀,祝您使用推理端點愉快!

社群

註冊登入以發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.