顯示具有 Azure 標籤的文章。 顯示所有文章
顯示具有 Azure 標籤的文章。 顯示所有文章

2024年5月10日 星期五

好站 : 變形金剛與抱臉怪-NLP 應用開發之實戰

上回在安裝 HugginFace 的 transformer 套件時找到下面這個 iT 邦幫忙的 NLP 教學文件, 作者以 30 篇文章完整說明如何 transformer 套件與資料集進行 NLP 應用開發, 非常值得一讀 : 


2024年4月3日 星期三

市圖還書一本 : 第一次用Azure雲端服務就上手

今天去大地游泳順便拿這本書去還 (被預約) : 

Source : 客來來

此書借來只翻閱了第一章而已就沒時間看了, 等我忙完再回借. 此書是少見的
 Azure 中文書.

2024年2月2日 星期五

微軟 Azure OpenAI 自學參考資料

1/30 參加 Azure OpenAI 內訓課程時老師提供了許多參考資料, 此課程為 Azure AI-050 認證的一部分, 包含 6 個模組, 每個模組均有實作, 整理如下 :

模組 0 :  
模組 1 : 
模組 2 :
  1. Azure OpenAI 服務的 REST API 參考 : https://learn.microsoft.com/en-us/azure/ai-services/openai/reference
  2. Azure OpenAI .NET SDK : https://learn.microsoft.com/en-us/dotnet/api/overview/azure/ai.openai-readme?view=azure-dotnet-preview
  3. ChatCompletion - 快速上手 - 使用 C# : https://learn.microsoft.com/en-us/azure/ai-services/openai/chatgpt-quickstart?tabs=command-line%2Cpython&pivots=programming-language-csharp
  4. 遷移到 OpenAI Python API 函式庫 1.x 版 : https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/migration?tabs=python%2Cdalle-fix
  5. ChatCompletion - 快速上手 - 使用 Python : https://learn.microsoft.com/en-us/azure/ai-services/openai/chatgpt-quickstart?tabs=command-line%2Cpython&pivots=programming-language-python
  6. 微軟學習 - 使用 Azure OpenAI 服務建立自然語言解決方案 : https://aka.ms/mslearn-build-openai
模組 3 : 
模組 4 : 
  1. Azure OpenAI 服務既有模型 : https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/legacy-models
  2. 微軟學習 - 利用 Azure OpenAI 服務產生程式碼 : https://aka.ms/mslearn-code-openai
模組 5 : 
模組 6 :
其他學習參考 : 
這些學習指引對於自學 Azure OpenAPI 非常有幫助, 過年期間可以好好地來探索一番. 

2024年1月17日 星期三

好站 : 白眼狼的 30 天 Azure 跳槽計畫系列

最近在學習 Azure AI 服務時找到下面這個很棒的 iT 邦幫忙系列教學文章 :


全部 30 篇文章涵蓋 Azure Function, Chatbot, Cognitive 與 Vision 等服務, 剛好都是我現在正感興趣的課題. 此系列文章程式碼部分使用我沒學過的 TypeScript, 如果能用我熟悉的 Python 就更好了, 不過對於了解 Azure 介面的設定與操作就都一樣沒差. 

其實去年內訓時也有找到, 但那時對 Azure 還不太有興趣, 現在有空玩了一下覺得還蠻好用的, 打算仔細來看. 例如 Azure Function 服務可讓我們在 Azure 上建立一個無伺服器服務, 特別適合用來打造 Chatbot 應用 (使用 Function 的 HTTPTrigger 範本). 

此系列文章也被改編成書由博碩出版 (2022) :



Source : momo


此書博客來 2/7 日前 5 折 300 元; 天瓏在 1/31 前也是 5 折 : 


2024年1月11日 星期四

Azure 學習筆記 : Azure AI 服務之文字分析 (一) 語言偵測

Azure AI 服務為原 Azure 認知服務 (Cognitive Service) 與 OpenAI 服務合併而成, 認知服務的 Decision, Language, Speech, 與 Vision 功能不變, 但 API 版本不同, 主要內容如下 :
  • OpenAI : 透過 API 呼叫 OpenAI 的 LLM 模型
  • Decision : 異常偵測, 個人化工具, 內容仲裁等
  • Language : 文字分析, 語言理解, 翻譯工具, QnA 等
  • Speech : 文轉音, 音轉文, 語者辨識, 語音翻譯等
  • Vision : 電腦視覺, 臉孔辨識等
認知服務是微軟以 IBM 認知計算概念為基礎所提出的一種雲端服務, 讓服務開發者不需要具備豐富的機器學習與資料科學技能, 只要熟悉 REST API 用法即可輕鬆將 AI 認知智慧導入應用程式中. 

參考 :
 

本篇是我閱讀  "Python 人工智慧程式設計入門-使用 Microsoft Azure 雲端服務" 這本書的第 9 章 "文字分析" 的語言偵測 (language detection) 後所進行的實測紀錄. 

文字分析 (text analysis) 屬於 Azure AI 服務中 Language 功能, 它內建自然語言處理 (NLP) 功能可用來進行語言偵測, 情感分析, 關鍵字擷取, 與具名實體 (NER) 辨識等分析, 參考 :


認知服務的文字分析 API 教學文件參考 : 


應用程式範例放在 GitHub, 可參考不同程式語言之範例 :


舊版 (v3.0) 的文字分析 API 範例參考 :


書裡面的範例就是採用 v3.0 API. 


在前一篇測試中, 我們已經在 Azure 雲端建立了一個資源群組與一個執行個體, 藉此取得了資源的端點 (即服務網址) 與存取該資源所需之金鑰. 本篇則要在應用程式中用它們來存取已建立的 Azure 資源以便進行文字分析任務. 


一. 語言偵測 (Language detection) : 

此功能可以辨識出輸入文本是屬於哪一種人類語言, 此功能利用 Azure AI 的機器學習與 NLP 演算法辨識輸入的文本是屬於哪一種人類語言 (包含變體與方言), 這在設計支援多國語言的 AI 應用服務時很有用, 參考 : 


按 "快速入門" 超連結 :





底下有一個 "必要條件", 這些我們在前一篇中已完成, 透過建立資源群組與執行個體, 取得了資源的端點 (即網址) 與存取它所需之金鑰 : 




開發者可使用 C#, JAVA, JavaScript, 或 Python 等程式語言以 REST API 方式向 Azure AI 資源提出要求來取得回應. 點選 Python, 底下會出現使用 Python 存取文字分析資源的範例, 但必須先安裝 Azure AI 文字分析的用戶端套件 azure-ai-textanalytics : 

pip install azure-ai-textanalytics==5.2.0 

D:\python\test>pip install azure-ai-textanalytics==5.2.0    
Collecting azure-ai-textanalytics==5.2.0
  Downloading azure_ai_textanalytics-5.2.0-py3-none-any.whl (239 kB)
239.3/239.3 kB 1.0 MB/s eta 0:00:00
Collecting azure-core<2.0.0,>=1.24.0 (from azure-ai-textanalytics==5.2.0)
  Downloading azure_core-1.29.6-py3-none-any.whl.metadata (36 kB)
Collecting msrest>=0.7.0 (from azure-ai-textanalytics==5.2.0)
  Downloading msrest-0.7.1-py3-none-any.whl (85 kB)
85.4/85.4 kB 2.4 MB/s eta 0:00:00
Collecting azure-common~=1.1 (from azure-ai-textanalytics==5.2.0)
  Downloading azure_common-1.1.28-py2.py3-none-any.whl (14 kB)
Requirement already satisfied: typing-extensions>=4.0.1 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from azure-ai-textanalytics==5.2.0) (4.9.0)
Requirement already satisfied: anyio<5.0,>=3.0 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (3.7.1)
Requirement already satisfied: requests>=2.21.0 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (2.31.0)
Requirement already satisfied: six>=1.11.0 in c:\users\tony1\appdata\local\programs\thonny\lib\site-packages (from azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (1.16.0)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from msrest>=0.7.0->azure-ai-textanalytics==5.2.0) (2023.7.22)
Collecting isodate>=0.6.0 (from msrest>=0.7.0->azure-ai-textanalytics==5.2.0)
  Downloading isodate-0.6.1-py2.py3-none-any.whl (41 kB)
41.7/41.7 kB 2.1 MB/s eta 0:00:00
Requirement already satisfied: requests-oauthlib>=0.5.0 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from msrest>=0.7.0->azure-ai-textanalytics==5.2.0) (1.3.1)
Requirement already satisfied: idna>=2.8 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from anyio<5.0,>=3.0->azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (3.4)
Requirement already satisfied: sniffio>=1.1 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from anyio<5.0,>=3.0->azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (1.3.0)
Requirement already satisfied: exceptiongroup in c:\users\tony1\appdata\roaming\python\python310\site-packages (from anyio<5.0,>=3.0->azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (1.1.3)
Requirement already satisfied: charset-normalizer<4,>=2 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from requests>=2.21.0->azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (3.2.0)
Requirement already satisfied: urllib3<3,>=1.21.1 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from requests>=2.21.0->azure-core<2.0.0,>=1.24.0->azure-ai-textanalytics==5.2.0) (1.26.16)
Requirement already satisfied: oauthlib>=3.0.0 in c:\users\tony1\appdata\roaming\python\python310\site-packages (from requests-oauthlib>=0.5.0->msrest>=0.7.0->azure-ai-textanalytics==5.2.0) (3.2.2)
Downloading azure_core-1.29.6-py3-none-any.whl (192 kB)
192.5/192.5 kB 2.9 MB/s eta 0:00:00
Installing collected packages: azure-common, isodate, azure-core, msrest, azure-ai-textanalytics
Successfully installed azure-ai-textanalytics-5.2.0 azure-common-1.1.28 azure-core-1.29.6 isodate-0.6.1 msrest-0.7.1

然後複製 "快速入門" 中的範例程式碼到編輯器 (我使用 Thonny), 將最前面兩列的 key 與 endpoint 變數換成自己的金鑰與端點網址, 然後存檔 (例如 azure_language_detect_1.py) : 

# azure_language_detect_1.py
key = "06f8a834tony4bdbbe264504b196606f"           # 此為範例金鑰
endpoint = "https://tony-test1.cognitiveservices.azure.com/"

from azure.ai.textanalytics import TextAnalyticsClient  
from azure.core.credentials import AzureKeyCredential  

# Authenticate the client using your key and endpoint 
def authenticate_client():
    ta_credential = AzureKeyCredential(key)
    text_analytics_client = TextAnalyticsClient(
            endpoint=endpoint, 
            credential=ta_credential)
    return text_analytics_client

client = authenticate_client()   # 傳回 TextAnalyticsClient 物件

# Example method for detecting the language of text
def language_detection_example(client):
    try:
        documents = ["Ce document est rédigé en Français."]
        response = client.detect_language(documents = documents, country_hint = 'us')[0]
        print("Language: ", response.primary_language.name)

    except Exception as err:
        print("Encountered exception. {}".format(err))

language_detection_example(client)

然後直接執行 :

>>> %Run azure_language_detect.py   
Language:  French  

可見得到正確輸出 (偵測到法語).

這個範例與書本上的舊版程式碼差很多, 上面的程式定義了兩個函式 : 
  • authenticate_client() : 
    利用所匯入的 AzureKeyCredential() 與 TextAnalyticsClient() 來驗證用戶端應用程式的存取權, 不管驗證是否成功, 它都會傳回一個 TextAnalyticsClient 物件.
  • language_detection_example() :
    呼叫傳回的 TextAnalyticsClient 物件之 detect_language() 方法偵測文本是哪種語言, 傳入參數 documents 為待測文本組成之串列 (可同時偵測多個不同語言之句子), 傳回一個 DetectLanguageResult 物件 (內容為一個兩層的字典), 偵測結果可用其primary_language.name 或 ['primary_language']['name'] 屬性取得.

以下是在互動環境中拆解執行步驟 : 

首先匯入函式 : 

>>> from azure.ai.textanalytics import TextAnalyticsClient  
>>> from azure.core.credentials import AzureKeyCredential  

接著定義認證用的金鑰與端點變數 : 

>>> key='06f8a834tony4bdbbe264504b196606f'        # 此為範例金鑰
>>> endpoint='https://tony-test1.cognitiveservices.azure.com/'  

然後呼叫 AzureKeyCredential() 並傳入 key 進行驗證, 它會傳回一個 AzureKeyCredential 物件 (驗證用) : 

>>> ta_credential=AzureKeyCredential(key)    
>>> type(ta_credential)    
<class 'azure.core.credentials.AzureKeyCredential'>    

接下來就可以呼叫 TextAnalyticsClient() 並傳入端點位址與 AzureKeyCredential 驗證物件, 它會傳回一個 TextAnalyticsClient 物件 (分析用) : 

>>> client=TextAnalyticsClient(endpoint=endpoint, credential=ta_credential)  
>>> type(client)  
<class 'azure.ai.textanalytics._text_analytics_client.TextAnalyticsClient'>    

注意, 不管金鑰與端點正確與否, 都會傳回一個 TextAnalyticsClient 物件, 但錯誤的金鑰或端點在後續做分析時會拋出例外. 

然後就可以建立一個待測句子串列 (可以一次偵測多個文本), 將它傳給 TextAnalyticsClient 物件的 detect_language() 測試, 傳回值是一個 DetectLanguageResult 物件 (類似字典) 組成的串列, 待測句子有幾個, 傳回串列裡就有幾個相對應的 DetectLanguageResult 物件, 先以上面的法文句子為例 :

>>> docs=['Ce document est rédigé en Français.']     # 待偵測之文本串列
>>> response=client.detect_language(documents=docs)    
>>> type(response)     
<class 'list'> 
>>> len(response)   
1
>>> type(response[0])    
<class 'azure.ai.textanalytics._models.DetectLanguageResult'>

可見傳入串列, 傳回值也是陣列, 裡面只有一個元素, 是一個類似字典的 DetectLanguageResult 物件, 查看 response 內容 : 

>>> response   
[DetectLanguageResult(id=0, primary_language=DetectedLanguage(name=French, iso6391_name=fr, confidence_score=1.0), warnings=[], statistics=None, is_error=False)]

可見偵測的結果放在 primary_language 這個 key 的值 (是一個 DetectedLanguage 物件) 裡面, 只要用 name 這個 key 即可取得偵測結果, 可以使用點運算子, 也可以使用 [] 運算子 : 

>>> response[0].primary_language.name       
'French'  
>>> response[0]['primary_language']['name']    
'French'

可以一次傳入多個句子去偵測, 例如下面中, 日, 韓, 英, 法五種語言六種文本的 '我愛你' : 

>>> docs=['我爱你', "Je t'aime", 'I love you', '我愛你', '愛してます', '사랑해요']    
>>> response=client.detect_language(documents=docs, country_hint = 'us')    
>>> response    
[DetectLanguageResult(id=0, primary_language=DetectedLanguage(name=Chinese_Simplified, iso6391_name=zh_chs, confidence_score=1.0), warnings=[], statistics=None, is_error=False), DetectLanguageResult(id=1, primary_language=DetectedLanguage(name=English, iso6391_name=en, confidence_score=1.0), warnings=[], statistics=None, is_error=False), DetectLanguageResult(id=2, primary_language=DetectedLanguage(name=English, iso6391_name=en, confidence_score=1.0), warnings=[], statistics=None, is_error=False), DetectLanguageResult(id=3, primary_language=DetectedLanguage(name=Chinese_Traditional, iso6391_name=zh_cht, confidence_score=1.0), warnings=[], statistics=None, is_error=False), DetectLanguageResult(id=4, primary_language=DetectedLanguage(name=Japanese, iso6391_name=ja, confidence_score=1.0), warnings=[], statistics=None, is_error=False), DetectLanguageResult(id=5, primary_language=DetectedLanguage(name=Korean, iso6391_name=ko, confidence_score=1.0), warnings=[], statistics=None, is_error=False)]

輸入幾個句子就會傳回幾個偵測結果, 我們可以用迴圈來列出偵測結果 :

>>> for r in response:    
    print(f'句子 {int(r.id) + 1} 語言: {r.primary_language.name}')   
    
句子 1 語言: Chinese_Simplified
句子 2 語言: English    (錯誤)
句子 3 語言: English
句子 4 語言: Chinese_Traditional
句子 5 語言: Japanese
句子 6 語言: Korean

除了句子 2 偵測錯誤 (應該是 French) 外, 其餘都正確. 錯誤原因可能是句子太短, 偵測模型把它誤認為是英語. 

我們可以用內建函式 enumerate() 來改善上面的輸出結果 :

>>> for id, r in enumerate(response):   
    print(f'"{docs[id]}" : {r.primary_language.name}')    
    
"我爱你" : Chinese_Simplified
"Je t'aime" : English
"I love you" : English
"我愛你" : Chinese_Traditional
"愛してます" : Japanese
"사랑해요" : Korean

函式 enumerate() 會傳回 response 串列元素 id 與元素值組成之 tuple 串列, 這樣便能取得元素之 id, 它的順序是與傳入參數 docs 內的文本是對應的, 因此可用來取得對應之輸入文本. 關於 enumerate() 用法參考 :


在上面測試中我們將金鑰直接以明碼寫在 key 變數中, 這在用 Colab 做教學或分享到 GitHub 時很容易不慎將金鑰洩漏出去, 比較好的做法是將金鑰儲存在系統變數中, 用到時再取出來, 作法參考下面這篇 : 


先用記事本將金鑰記在常數名稱 AZURE_AI_API 內, 例如 : 

AZURE_AI_API=06f8a834tony4bdbbe264504b196606f

然後以 utf-8 格式儲存為 .env 檔. 接著用 pip install 安裝 python-dotenv 套件, 就可以從 dotenv 匯入 load_dotenv() 函式來載入系統變數, 利用 os.load_environ.get('AZURE_AI_API') 來載入金鑰. 

茲將上面測試程式碼寫成如下單一程式檔 : 

# azure_ai_detect_language.py
import os
from dotenv import load_dotenv
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

def authenticate_client(endpoint, key):
    credential=AzureKeyCredential(key)
    client=TextAnalyticsClient(endpoint=endpoint,
                               credential=credential)
    return client

if __name__ == '__main__':
    load_dotenv()
    key=os.environ.get('AZURE_AI_API')
    endpoint='https://tony-test1.cognitiveservices.azure.com/'
    client=authenticate_client(endpoint, key)
    docs=['我爱你',
          "Je t'aime",
          'I love you', '我愛你',
          '愛してます', 
          '사랑해요']
    response=client.detect_language(documents=docs)
    for id, r in enumerate(response):   
        print(f'"{docs[id]}" : {r.primary_language.name}')  

執行結果如下 :

>>> %Run azure_ai_detect_language.py   
"我爱你" : Chinese_Simplified
"Je t'aime" : English       (錯誤)
"I love you" : English
"我愛你" : Chinese_Traditional
"愛してます" : Japanese
"사랑해요" : Korean

原始碼存放於 GitHub :


2024年1月9日 星期二

Azure 學習筆記 : 建立資源群組與執行個體

上周跟天瓏買了 "Python 人工智慧程式設計入門-使用 Microsoft Azure 雲端服務" 這本書, 週五去小七領貨帶回鄉下, 今天就迫不及待借用二哥的學生帳號申請 API 來測試其中與 NLP 有關的認知服務, 因月底要參加 Azure 認證的內訓課程, 預先熟悉一下 Azure 操作介面也比較好. 

本篇以註冊認知服務為例紀錄操作過程. 注意, Azure 服務頁面目前還不斷更新, 我設定時對照書上截圖不完全一樣, 但操作流程基本上沒變. 
  

一. 登入微軟帳號 : 

首先到微軟 Azure 入口網站 :


輸入微軟帳號的 Email 或用 GitHub 帳號登入 Azure :





我使用學生版帳號登入, 只要有 edu.tw 信箱即可免輸入信用卡號碼註冊, 可免費使用許多 Azure 雲端資源, 參考 :


使用一般帳號申請 Azure 亦可獲得首次註冊 300 美元的免費額度. 


二. 建立資源群組與執行個體 : 

登入 Azure 後往下拉到 Azure 服務這邊, 按 "+ 建立資源" :




在 "建立資源" 頁面, 按右上角的 "在 Marketplaces 查看更多" :  




在 Marketplace 頁面中勾選 "僅 Azure 服務" 以限縮範圍, 然後在上方搜尋框中輸入 "text analysis" (注意, 不是 analytics) 後按 ENTER 鍵 :




這樣就會找到 "文字分析" 服務了, 按 "建立" 鈕建立 Language service 資源 :




在 "選取其他功能" 頁面, 左邊顯示文字分析預設的功能, 右邊是自訂功能, 可視需要按 "選取" 鈕選取, 此處我兩個都選, 然後按左下角的 "繼續建立您的資源" 鈕進下一頁 :
 



這是右邊按選取後的特寫 : 



按 "繼續建立您的資源" 鈕會進入 "建立語言" 頁面, 這裡是重頭戲, 其中最重要的是要設定資源群組與執行個體名稱, 資源群組底下可以有多個執行個體, 他們與儲存體都共用相同的權限, 原則, 與生命週期 (故群組被刪除底下的資源全部消失). 




注意, 資源群組與執行個體名稱必須為英數字與 - 組合, 但 - 不可在頭尾, 執行個體名稱會成為服務端點 (end-point, 也就是網址) 的一部分, 特寫如下 :




因為有選取客製化 (Customerization) 功能, 所以必須建立/選擇儲存體帳戶來儲存上傳的訓練資料檔, 帳戶類型選 Standar LRS 即可. 注意, 儲存體名稱只能用英數字組合 (不可以用 -), 特寫如下 :




關於儲存體帳戶說明參考 :


完成設定後, 必須勾選左下角的 "負責任 AI 注意事項" 才會讓我們按 "下一頁" 或 "檢閱 + 建立" 鈕, 按任何一個都會顯示如下頁面 :




按 "建立" 鈕就會開始佈署所需要的所有資源 :




大概 2 分鐘就佈署完成, 結果如下 :





這樣便完成設定了, 按底下 "前往資源群組" 鈕會顯示資源列表的概觀頁面 : 




三. 申請 Azure 認知服務 API 金鑰 : 

在上面資源概觀頁面中按 "語言" 這個資源的名稱 "tony-test1" 超連結 :




這頁會列出此資源的內容, 重點資訊是端點 (end-point), 也就是存取此資源的網址 : 




接下來按 "端點" 下方 "按這裡以管理金鑰" 超連結進入 "金鑰與端點"頁面, 可見預設已自動產生兩組金鑰 key1 與 key2 (使用任何一個都可以), 按 "顯示金鑰" 鈕會將它們以明碼顯示, 按 "重新產生 Key1/key2" 鈕則可建立新的金鑰. 最底下一欄則是此服務資源的端點 (也就是網址), 按右方複製鈕可將金鑰或端點複製到剪貼簿:




先把金鑰貼到記事本取名為 AZURE_AI_KEY, 然後以 utf-8 編碼格式儲存為工作目錄下的 .env 隱藏檔, 於程式中可利用 dotenv 或 decouple 等套件存入環境變數中 :  

AZURE_AI_KEY=06f8a834tony4bdbbe264504b196606f     (此為範例金鑰)

做法參考 :


端點網址也複製起來備用 : 

https://tony-test1.cognitiveservices.azure.com/

這樣就完成了資源群組與執行個體的建立, 取得了資源的端點與金鑰, 可在應用程式中用來存取資源.

參考 : 


2024年1月7日 星期日

好站 : 從開源角度認識 Microsoft Azure

今天在找尋 Azure 的資源時發現了這個很棒的網站 :


我之前有買一本如何在 Azure 平台上架設 WordPress 網站的書, 而這網站則是介紹如何在 Azure 上用 Django 架設網站, 這是對 Python 學習者非常寶貴的教學指引, 市面上找不到這樣的書, 我建議博碩可以找作者將這系列文章出一本書 (我手上有好幾本博碩將 iT 邦幫忙鐵人賽得獎作品出版的書). 

作者吳大明是交大資工所畢業, 曾任職聯發科的工程師王大明, 他的碩士論文也很有趣, 有空來仔細讀一讀 : 


我有一個大膽的想法 : 能否依照他碩論的作法將這個系統實做出來? 我認為作者應該是有實作才對, 但通常不會公開原始碼與實作細節. 我是想, 如果這幾年那些捲入學倫事件的政治人物如果用這種方法生成論文而非抄襲, 那應該可以避開這些可能斷送政治生涯的風暴吧? 

2023年10月11日 星期三

市圖還書 1 本 (Python 人工智慧程式設計入門)

今天去市圖還了下面這本書 : 



Source : 博客來


此書為台中科大蕭國倫老師所寫, 前半部為 Python 語法介紹, 篇幅雖不多, 但重點都有帶到; 後半部講 Azure 的雲端認知服務, 我之前有幫二哥申請 Azure 學生帳號, 但一直都沒時間測試. 此書後面還有 6 個人預約排隊, 可見是本搶手的好書  (但要半年後這本書才會回到我手上, 哭哭), 前陣子我有買蕭國倫老師寫的另一本 WordPress + Azure 的書, 就是因為覺得他書寫得好. 


2024-01-10 補充 :

因太多人預約, 年初已購買此書.


2023年7月31日 星期一

momo 買書兩本 : Azure WordPress 與深度學習

momo 66 折活動今天截止, 買了下面兩本深智的 :




雖然第二本母校可借, 但總是看一個月就被預約走, 趁 66 折買下來吧. 兩書合計 1359 元, 滿 1200 登記送 10% momo 幣 (那是 136 元媽?). 

2023年6月6日 星期二

註冊 Azure 學生版帳號

最近從母校借到 "Python 人工智慧程式設計入門-使用 Microsoft Azure 雲端服務" 這本書, 前半部講 Python 程式設計, 後半部則是介紹 Azuure 的認知服務, 也就是在納入 OpenAI 功能之前 Azure 本來就有的 AI 服務. 

在第八章介紹 Azure 帳號註冊的兩種方式, 一個是一般用戶註冊 (需填信用卡號碼), 其次是以學生身分註冊 (有 edu 信箱的大學生, 免登錄信用卡), 可獲得一年 100 美元的 Azure 使用額度 (每年要更新), 註冊網址為 : 






按 "開始免費使用" 鈕進行註冊, 首先要登入以 edu 信箱註冊的微軟帳號 :





登入成功後須輸入學生姓名與信箱, 並驗證學術狀態 (即是否在學中) :




驗證完成顯示設定檔資料, 確定無誤按底下 "註冊" 鈕 :






按 "註冊" 提交註冊資訊 :




註冊完成會傳送驗證碼簡訊至手機 : 



驗證成功自動登入 Azure : 




可見一年內有 100 美元 Azure 額度可用, 只要是在校學生每年經過驗證都能免信用卡再次擁有 100 美元使用額度. 關於 Azure 學生版說明參考 :


2023年4月6日 星期四

Azure 相關的中文書籍

最近參加幾堂 Azure 相關內訓課程, 由於微軟是 OpenAI 大股東, Azure 已導入 OpenAI 的 ChatGPT 雲端 AI 應用開發, 使得 Azure 也水漲船高, 也讓我對 Azure 越來越有興趣. 我在博客來搜尋 Azure 的中文書找到下面幾本還不錯的 :



Source : 博客來


此書改寫自作者參加 iT 邦幫忙鐵人賽獲得冠軍的系列文章 : 





Source : 博客來


此書翻譯自 WILEY 2020 年出版的 "Microsoft Azure for Dummy". 主要是介紹如何利用 Azure 雲端資源佈署網頁應用程式, 此書市圖可借 

2020年6月14日 星期日

Azure 認證流程

最近在市圖借了一本微軟雲端技術 Azure 的書 :

# Windows Azure WebSites雲端運算平台開發實戰解析


Source : 金石堂


我想微軟應該有 Azure 雲端認證體系, 國內恆逸資訊就有一系列課程, 參考 :

# 恆逸資訊 Azure 認證課程介紹


Source : 恆逸資訊


可見 AZ-900 是所有認證的起點, 然後才是 AZ-103 或 AZ-203. But ..... AWS 都還沒學完又想學 Azure, 我管得也似乎太廣了 ~~~. 不過, 微軟 Azure 的市占率在 2019 年已上升到 18%, 後市看好, 勢必成為 AWS 勁敵, 而且 Azure 也有許多資料科學與語音 AI 組件可用, 值得一探.

恆逸常常寄課程通知給我, 但我都沒時間去上, 上課適合工作有急需的人, 我這種業餘純興趣者只要自主學習即可, 網路上有非常多教材與學習指引, 我所有的 IT 與 AIoT 技能全都是靠網路前輩不吝分享的知識堆疊起來的, 非常感謝 ~~~.