Azure OpenAI 介紹
如大家所知微軟投資OpenAI這家公司,而這家公司也是近期火紅的聊天機器人ChatGPT所推出的。OpenAI 同時也發布一款名為 DALL-E 的圖像產生應用程序。 這些技術是用 AI 模型構建的,這些模型可以從使用者那裡獲取幾乎任何自然語言輸入,並返回機器創建的類似人類的回應。
OpenAI AI 模型中有三個主要的功能類別:
以下是OpenAI在AI領域中可以做的事情:
- 人工智慧會藉由依賴機器來學習和執行工作來模擬人類行為,而不需要人類的指示。
- 機器學習模型會採用天氣狀況等資料,並將資料符合演算法,以做出預測,例如商店在某些假日內可能會有多少營收。
- 深度學習模型會以人工神經網路的形式使用多層演算法,以傳回更複雜的使用案例結果。 Azure AI 服務是以深度學習模型為基礎所建置。 更多的訊息可參考微軟的機器學習與深度學習之間的差異。
- 生成式AI 模型是深度學習模型的其中一種,可根據輸入中所述的內容來產生新內容。 OpenAI 模型是一組可產生語言、程式碼和影像的 AI 模型集合。
微軟整合OpenAI服務以達成以下三個目的:
- 利用 Azure 的基礎設施,包括安全性、合規性和區域可用性。
- 跨 Microsoft 產品(包括 Azure AI 產品)部署 OpenAI AI 模型功能。
- 使用 Azure 為 OpenAI 的所有工作負載提供支援。
Azure OpenAI 由四個組件組成:
- 預先訓練好的生成式 AI 模型
- 客制化能力; 使用我們自己的資料微調 AI 模型的能力
- 用於偵測和減少有害用例的內置工具,防止使用者亂用AI
- 具有基於RBAC和專用網路的企業級安全性
下圖為Azure OpenAI與Azure AI 服務之間的關係圖
如何使用Azure OpenAI
基本上要使用Azure OpenAI與使用Azure的方式是一樣的,透過REST APIs, Python SDK或web介面進入到Azure OpenAI Studio。
在 Azure OpenAI Studio 中,我們可以建立 AI 模型並將它們部署到應用程式中。 Azure OpenAI 的功能是通過一些特定的生成式 AI 模型實現的。 不同的模型是針對不同的任務; 一些模型擅長簡單的摘要任務,一些模型擅長一般的非結構化回應,還有一些模型用於從文本輸入生成獨特的圖片。
OpenAI模型分為三種主要類型:
- Generative Pre-trained Transformer (GPT) — 也就是我們都知道的ChatGPT,現在是第三代。
- Codex
- DALL-E
上述這些模型都已內建在Azure OpenAI中。Azure OpenAI 的 AI 模型都可以通過自行微調進行訓練和客製。 更多客製模型的方法可參考此篇文件。
生成式 AI 模型永遠都會反映true value的概率。 效能更高的模型,例如針對特定任務進行了微調的模型,可以更好地收到反映true value的回應。 檢查生成式 AI 模型的輸出很重要。 此外,Azure OpenAI 提供的模型是根據 2019 年 10 月之前的資料進行訓練的,而且沒有去爬Internet的資料,所以它不是CheatGPT。
作業介面
在Azure OpenAI Studio中,我們可以點選Playground的GPT-3界面中進行 OpenAI 建模(如下圖)。 我們可以在"Start typing here" 輸入指令。
OpenAI的自然語言處理(NLP)
Azure OpenAI 的自然語言模型能夠接受自然語言(就是人類說的白話文)並產生回應。
自然語言學習模型是根據稱為token的單詞或一個字串進行訓練的。 例如,英文中的單詞“hamburger(漢堡)”會被分解為三個token: ham、bur 和 ger,而像“pig”這樣的短而常見的單詞是一個token。 這些token被對映到向量(vectors)中,以供機器學習模型用於訓練。 當經過訓練的自然語言模型收到使用者說的話時時,它還會將收到的話分解為token。
GPT(Generative pre-trained transformer)模型在理解和建立自然語言方面表現出色。 如果你有使用過CheatGPT,哪你應該非常了解CheatGPT的自然與眼處理能力。 GPT 模型通常在末尾附加版本,例如 GPT-2 或 GPT-3。 Azure OpenAI 提供對 GPT-3 ,並將很快提供對 GPT-3.5 的版本。目前CheatGPT則是3.5版本。
GPT-3的操作
OpenAI 的生成式 AI 的一個主要特點是它接受的輸入或提示後會用自然語言、視覺或代碼回應。 GPT 嘗試根據提示推斷或猜測使用者問題的上下文。
GPT 模型擅長完成多項自然語言任務,其中包括:
以下為使用ChatGPT的範例,問食譜的問題,ChatGPT會給實際的執行步驟
用ChatGPT來產生程式代碼
代碼生成 AI 模型(Code generation AI models)能夠採用自然語言或一部分的代碼並來產生整個所需功能的代碼。 OpenAI代碼生成模型系列Codex可以慘生C#、JavaScript、Perl、PHP等十幾種開發語言代碼,其中最擅長Python。
Codex
Codex 模型是基於 GPT-3(也等同與ChatGPT),並經過優化來理解和編寫代碼。 這些模型已經過自然語言和來自公開代碼存儲庫的數十億行代碼的訓練。 Codex 能夠從代碼註解等自然語言的指示生成代碼,並能建議完成代碼功能的方法。
以下為給一段未完成的代瑪給ChatGPT,它會幫我們完成之後的代碼編寫。可能是我們想要的,也可能不是,一切都是基於概率。
Codex 還可以總結已經編寫的函數,解釋 SQL 語法或tables,並將函數從一種開發語言轉換為另一種開發語言。
與 Codex 模型互動時時,我們可以指定代碼庫或特定於開發語言的標籤,以使 Codex 清楚我們想要什麼。 例如,我們可以提問"請幫我產生一個解釋"什麼是AI"的html網頁代碼",並從Codex取得結果
這裡一樣以ChatGPT為例(因為它們一樣是以GPT3為基礎)
GitHub Copilot
這一樣是基於OpenAI的技術,就是用AI開發程式(但還是需要人類先起頭)。 GitHub Copilot 將 OpenAI Codex 的功能整合到於 Visual Studio Code 等開發人員環境的插件中。
安裝並啟用插件後,就可以開始編寫代碼,GitHub Copilot 會開始根據代碼註釋或函數名稱自動建議函數的其他部分。 比如我們在開發中只有一個函數名,灰色的文字是自動提示完成的(如下圖範例)。
GitHub Copilot 會提供了多種選擇的完整代碼,我們可以使用tab鍵進行選擇要哪一種。 當給出資料詳細的代碼註解時,它甚至可以建議一個函數名稱以及完整的函數代碼(如下圖所示)。
OpenAI的影像產生功能
影像生成模型可以採用提示、基本圖像或兩者一起用,並建立新的東西。 這些生成式 AI 模型可以建立圖片,更改圖像片的佈局或樣式。
DALL-E
除了自然語言能力外,這些生成式 AI 模型還可以編輯和建立影像。 處理影像的模型稱為 DALL-E。 它與 GPT 模型非常相似。影像功能通常分為影像建立、影像編輯和影像變體建立這三種。