資料介紹
描述
為什么選擇泰哈克
在大流行開(kāi)始時(shí)對(duì) COVID-19 進(jìn)行測(cè)試很困難,沒(méi)有足夠的測(cè)試套件可供使用,而且就可靠性而言,套件本身仍在開(kāi)發(fā)中。幾十年來(lái),醫(yī)生一直通過(guò)聽(tīng)病人咳嗽和呼吸來(lái)診斷各種疾病。研究人員已經(jīng)對(duì)開(kāi)發(fā)機(jī)器學(xué)習(xí)模型進(jìn)行了研究,以預(yù)測(cè)患者是否患有支氣管炎,我們可以將相同的方法應(yīng)用于 COVID-19 嗎?
是的,答案是肯定的,麻省理工學(xué)院和其他人已經(jīng)做到了……并且正在制作一個(gè)應(yīng)用程序……
麻省理工學(xué)院研究的關(guān)鍵信息之一是,他們能夠使用他們訓(xùn)練有素的模型識(shí)別出沒(méi)有病毒癥狀的人,事實(shí)證明咳嗽是關(guān)鍵。
現(xiàn)在,麻省理工學(xué)院這次擊敗了我們,但正如麻省理工學(xué)院已經(jīng)指出的那樣,無(wú)癥狀的人可能不會(huì)急于接受測(cè)試,如果麻省理工學(xué)院發(fā)布一個(gè)應(yīng)用程序,它仍然需要用戶(hù)下載和使用該應(yīng)用程序。
Tyhac 旨在通過(guò)提供一種被動(dòng)聽(tīng)音設(shè)備來(lái)解決這些問(wèn)題,該設(shè)備可以檢測(cè)咳嗽,然后對(duì)樣本進(jìn)行深度學(xué)習(xí)推理以確定 COVID-19 是陽(yáng)性還是陰性。通過(guò)在辦公室、電梯、候診室等公共場(chǎng)所安裝 tyhac,我們可以通過(guò)響應(yīng)檢測(cè)到的事件來(lái)幫助更好地保護(hù)我們的社區(qū)。我們還可以使用 tyhac 更好地了解社區(qū)在流感季節(jié)的反應(yīng),以及是否在工作場(chǎng)所管理健康習(xí)慣活動(dòng),以確保工人照顧好自己,并在可能的情況下使用遠(yuǎn)程工作來(lái)限制傳播。
它是如何工作的?
得益于 M5 Core2 堆棧和 AWS,解決方案本身非常簡(jiǎn)單,這讓一切變得非常簡(jiǎn)單。它將貫穿設(shè)備的高級(jí)設(shè)計(jì)和 AWS 配置:
現(xiàn)在我們對(duì)堆棧有了更好的理解,我們可以討論一些關(guān)鍵特性,然后進(jìn)入演示。該設(shè)備設(shè)計(jì)為在兩種模式下運(yùn)行:
被動(dòng)的
此模式專(zhuān)為安裝在工作場(chǎng)所、電梯、候診室、辦公室隔間、家庭等中的設(shè)備而開(kāi)發(fā)。LM393 麥克風(fēng)傳感器具有可聞噪音閾值,一旦超過(guò)該閾值,SPM1423 內(nèi)部 I2S 麥克風(fēng)將開(kāi)始錄音一個(gè) 10 秒的音頻樣本。
臨床醫(yī)生(現(xiàn)場(chǎng)單位)
此模式專(zhuān)為醫(yī)療專(zhuān)業(yè)人員設(shè)計(jì),在此模式下,設(shè)備不使用 LM393,技術(shù)上不需要。如果喜歡移動(dòng)設(shè)備,該設(shè)備可以使用電池(包括在設(shè)備中)。
用戶(hù)會(huì)看到一個(gè)顯示兩個(gè)選項(xiàng)的菜單:
提交
此按鈕旨在供醫(yī)療專(zhuān)業(yè)人員提交陽(yáng)性樣本,我已將其包含在內(nèi),以便我們接收標(biāo)記樣本以繼續(xù)訓(xùn)練模型并改進(jìn)預(yù)測(cè)。
測(cè)試
此按鈕用于診斷患者,一旦按下按鈕,它將使用內(nèi)部 SPM1423 I2S 麥克風(fēng)錄制 10 秒的音頻。
上傳
兩種模式都將音頻樣本記錄為 WAV 文件并寫(xiě)入設(shè)備上的 SD 卡。然后設(shè)備將發(fā)布到 S3 Pre-signed URL MQTT 主題以請(qǐng)求安全 url 來(lái)上傳 WAV 文件。收到后,設(shè)備將開(kāi)始通過(guò)安全 HTTPS 上傳。
驗(yàn)證
文件上傳到 AWS S3 后,存儲(chǔ)桶觸發(fā)事件將調(diào)用暫存 Lambda 函數(shù)。暫存過(guò)程對(duì)樣本進(jìn)行一系列檢查:
- 樣本是有效的 WAV 文件嗎?
- 樣本是咳嗽嗎?
- 擴(kuò)充文件
- 歸檔文件并復(fù)制到最終存儲(chǔ)桶
如果在任何階段暫存功能不起作用或檢查失敗,則文件將從存儲(chǔ)桶中刪除。DynamoDB 事件隨結(jié)果更新,旨在最大限度地減少非咳嗽相關(guān)音頻樣本的存儲(chǔ)。
推理/預(yù)測(cè)
在最終存儲(chǔ)桶中創(chuàng)建文件后,將從 S3 事件調(diào)用推理 Lambda 函數(shù)。這將加載經(jīng)過(guò)訓(xùn)練的 tyhac 模型并對(duì)樣本進(jìn)行預(yù)測(cè)。結(jié)果通過(guò) MQTT 返回。
演示
我準(zhǔn)備了一個(gè)演示,它將運(yùn)行一些功能,以便我們可以看到它的作用。演示顯示:
- 啟動(dòng)
- 被動(dòng)covid-19檢測(cè)
- 臨床模式測(cè)試
讓我們構(gòu)建一些東西(代碼)
在本節(jié)中,我們將逐步啟動(dòng)和運(yùn)行您的設(shè)置。請(qǐng)務(wù)必查看 BOM 以確保您擁有運(yùn)行構(gòu)建所需的組件。
除了 BOM,您還需要一個(gè)有效的 AWS 賬戶(hù),因?yàn)檫@需要使用 AWS 服務(wù)(太棒了!!!)。如果您沒(méi)有賬戶(hù),請(qǐng)按照AWS 官方文檔設(shè)置賬戶(hù)。
專(zhuān)業(yè)提示:云需要花錢(qián),我強(qiáng)烈建議您了解構(gòu)建成本并使用計(jì)費(fèi)警報(bào)設(shè)置您滿(mǎn)意的閾值。我創(chuàng)建了一個(gè)單獨(dú)的項(xiàng)目來(lái)自動(dòng)執(zhí)行此操作,請(qǐng)隨時(shí)查看。
構(gòu)建這個(gè)項(xiàng)目所需的一切(不包括物理資產(chǎn))都可以在talkncloud github repo 上開(kāi)源。以下內(nèi)容將作為“快速入門(mén)”幫助您啟動(dòng)和運(yùn)行。
注意:您將在項(xiàng)目代碼和 github 存儲(chǔ)庫(kù)中找到其他信息來(lái)補(bǔ)充這篇文章。
項(xiàng)目文件夾結(jié)構(gòu)
瀏覽存儲(chǔ)庫(kù)后,您會(huì)注意到該項(xiàng)目已分為三個(gè)單獨(dú)的文件夾:
- aws-cdk
- aws-物聯(lián)網(wǎng)
- aws-sagemaker
AWS-CDK
AWS Cloud Development Kit (CDK) 文件夾包含在云中部署所需服務(wù)所需的一切。如果您之前參考高級(jí)設(shè)計(jì)圖,圖中的所有內(nèi)容都將自動(dòng)為您提供。這就是基礎(chǔ)設(shè)施即代碼 (IaC),通過(guò)將所有內(nèi)容開(kāi)發(fā)為代碼,我可以提供一致的可重復(fù)環(huán)境,以確保其按設(shè)計(jì)工作。另一種方法是您需要手動(dòng)創(chuàng)建所有內(nèi)容(無(wú)聊)。
注意:CDK 是一個(gè)很棒的項(xiàng)目,如果您在熟悉開(kāi)發(fā)定義風(fēng)格的語(yǔ)言(如 JSON 或 YAML)之前看過(guò) IaC。CDK 允許您將諸如 typescript、python 之類(lèi)的編程語(yǔ)言帶到聚會(huì)中,如果您正在瀏覽 hackster,我相信您會(huì)喜歡的。
AWS-物聯(lián)網(wǎng)
用于構(gòu)建固件并將其上傳到您的 M5 Core2 AWS EduKit 設(shè)備的 arduino 代碼。這是在您的設(shè)備上運(yùn)行 tyhac 固件所必需的,我們將使用 platformio 使事情變得更容易一些。
AWS-SAGEMaker
如果您正在深入學(xué)習(xí),此文件夾包含執(zhí)行數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練和模型托管所需的一切。高級(jí)設(shè)計(jì)中使用的訓(xùn)練模型包含在項(xiàng)目中。對(duì)于此構(gòu)建,您根本不需要使用 sagemaker。Sagemaker 不包含在 aws-cdk 部署中。
如果您想在模型上構(gòu)建或只是好奇,此文件夾適合您。
專(zhuān)業(yè)提示:我正在使用 fastai 和 fastaudio ,如果您正在考慮進(jìn)行任何深度學(xué)習(xí),我強(qiáng)烈建議您檢查一下。
第一步:克隆倉(cāng)庫(kù)
讓我們通過(guò)準(zhǔn)備本地環(huán)境來(lái)工作,我們將從 cdk 開(kāi)始,然后移動(dòng)到設(shè)備上。
克隆倉(cāng)庫(kù)
讓我們克隆所有 tyhac 的優(yōu)點(diǎn)...
git clone https://github.com/talkncloud/tyhac-aws-hackster
cd tyhac-aws-hackster
Step2:AWS-CDK部署AWS
該項(xiàng)目需要使用 docker 容器,這些容器將使用 AWS Elastic Container Registry 構(gòu)建并存儲(chǔ)在您的 AWS 賬戶(hù)中。這些容器用于 lambda 函數(shù)以執(zhí)行分段和推理。如果您安裝并運(yùn)行了 docker,您可以在本地構(gòu)建這些容器,CDK 會(huì)處理所有事情。如果您沒(méi)有這些或您的互聯(lián)網(wǎng)速度很慢,我可以推薦AWS Cloud9。容器將上傳大約 3-4GB。
您不需要了解有關(guān)容器的任何信息,一切都會(huì)得到照顧。
如果你要去本地,請(qǐng)參考 docker doco 進(jìn)行安裝和配置。如果您使用的是 Cloud9,它已經(jīng)安裝。
注意:Cloud9 不是免費(fèi)的,請(qǐng)參閱 AWS 定價(jià),Cloud9 未包含在此構(gòu)建的最終成本中,因?yàn)樗皇潜匦璧摹?/font>
除了 CDK,我們將使用projen,另一個(gè)很棒的項(xiàng)目,這簡(jiǎn)化了 CDK 和類(lèi)似項(xiàng)目的構(gòu)建和維護(hù)。這假設(shè)您已經(jīng)安裝了節(jié)點(diǎn),有關(guān)詳細(xì)信息,請(qǐng)參閱節(jié)點(diǎn)文檔。
npm install -g aws-cdk
npm install -g projen
npm install -g yarn
您需要下載并安裝 AWS cli ,這將允許您向 AWS 進(jìn)行身份驗(yàn)證并執(zhí)行與云相關(guān)的操作,這是我們需要將 CDK 部署到您的帳戶(hù)中的。
安裝 AWS cli 后,您需要配置客戶(hù)端以添加訪問(wèn)密鑰。這將授予 AWS cli 訪問(wèn)您賬戶(hù)的權(quán)限。有關(guān)配置,請(qǐng)參閱AWS 文檔。
專(zhuān)業(yè)提示:AWS 所指的密鑰是密碼,請(qǐng)像這樣對(duì)待它們。不要共享它們并限制他們的訪問(wèn)。如果這是您第一次進(jìn)入 AWS,請(qǐng)?jiān)诖藰?gòu)建結(jié)束時(shí)刪除您的憑證文件以及您在 AWS 賬戶(hù)中生成的任何密鑰。如果需要,您可以隨時(shí)創(chuàng)建更多。最好不要把鑰匙掛在身邊。
現(xiàn)在您已經(jīng)安裝了所有東西,并且您已經(jīng)為您的 AWS cli 配置了訪問(wèn)權(quán)限,您可以為 tyhac 預(yù)置后端 AWS 資源、權(quán)限、策略和配置。
projen
projen deploy
以下視頻展示了使用 Cloud9 的部署,同樣適用于 Visual Studio 代碼:
讓我們驗(yàn)證幾件事,我不會(huì)詳細(xì)介紹,但如果您愿意,請(qǐng)了解 CDK 使用 AWS Cloudformation,即 IaC 'OG'。使用控制臺(tái)前往 cloudformation 并找到部署:
恭喜,您剛剛構(gòu)建了容器、函數(shù)、存儲(chǔ)桶、數(shù)據(jù)庫(kù)、物聯(lián)網(wǎng)等。很酷!
步驟 3:AWS-IOT 構(gòu)建和上傳 tyhac arduino 固件
現(xiàn)在,您可能最感興趣的部分是 tyhac。現(xiàn)在我們的 AWS 后端正在等待并準(zhǔn)備好迎接您的事情,我們可以繼續(xù)構(gòu)建我們的設(shè)備。
我強(qiáng)烈推薦AWS EduKit 上的示例和指南,這是從設(shè)置環(huán)境到運(yùn)行示例項(xiàng)目的豐富信息。最好通過(guò)其中的一兩個(gè)來(lái)感受一下。
LM393麥克風(fēng)單元和SD卡
這部分很簡(jiǎn)單,如果您使用的是 LM393 單元,只需將??傳感器連接到設(shè)備上的端口 B。這在 LM393 的外殼上標(biāo)明。
將 micro SD 卡插入設(shè)備的 SD 卡插槽。
平臺(tái)
我正在使用 platformio 來(lái)提供功能豐富且易于擴(kuò)展的 Visual Studio 代碼。請(qǐng)參閱Visual Studio 代碼下載和安裝和platformio 安裝以使它們運(yùn)行。
現(xiàn)在讓我們進(jìn)入 aws-iot 文件夾:
cd aws-iot
code
這應(yīng)該在該位置打開(kāi) Visual Studio 代碼編輯器,否則打開(kāi) Visual Studio 代碼并打開(kāi)克隆的存儲(chǔ)庫(kù)。
我們將使用 platformio 打開(kāi) iot 項(xiàng)目,這將創(chuàng)建連接到設(shè)備和使用 platformio 所需的環(huán)境:
文件夾結(jié)構(gòu)
文件夾結(jié)構(gòu)主要基于默認(rèn)的 platformio 框架,您會(huì)注意到包含的自述文件比我能更好地解釋這一點(diǎn)。
我想強(qiáng)調(diào)幾項(xiàng):
certs - 安全 HTTPS 通信所需的公共 AWS 證書(shū)
實(shí)用程序 - 我們將使用它來(lái)自動(dòng)使用 AWS 配置事物
lib - 大多數(shù)代碼已被拆分為單獨(dú)的庫(kù)以使其更容易,此文件夾包含 tyhac 庫(kù)
lib/env - 你需要為你的環(huán)境更新它,我們將在下一節(jié)中詳細(xì)討論
platformio.ini - 您可能需要根據(jù)您的系統(tǒng)更改此文件中的設(shè)置,主要是 USB 端口。例如,AWS EduKit、USB 信息。
環(huán)境樣本.h
使用編輯器打開(kāi)環(huán)境文件,您需要將示例文件復(fù)制到名為env.h的相同位置
更新您的環(huán)境的設(shè)置,該文件包含有關(guān)如何檢索您需要的 AWS 相關(guān)信息的有用詳細(xì)信息。例子:
您的 AWS 賬戶(hù):
aws sts get-caller-identity
您的 AWS IoT 終端節(jié)點(diǎn):
aws iot describe-endpoint --endpoint-type iot:Data-ATS
設(shè)備配置
您可以想象,我們不希望任何人都使用我們的 AWS tyhac 堆棧。要將 AWS IoT 與我們的配置一起使用,您需要將設(shè)備注冊(cè)到 AWS IoT。這需要生成證書(shū)并將設(shè)備與相關(guān)策略相關(guān)聯(lián),以便事物可以做它需要做的事情,例如 MQTT。
我提供了一個(gè)腳本來(lái)為你處理這個(gè)問(wèn)題。如果您遵循AWS EduKit 指南,您會(huì)注意到這是一種類(lèi)似的方法。該腳本將在 AWS IoT 中注冊(cè)事物,生成證書(shū)并將證書(shū)與我們之前在 CDK 堆棧中創(chuàng)建的策略相關(guān)聯(lián)。
cd utilities/AWS_IoT_registration_helper
./registration_helper.sh
生成的證書(shū)存儲(chǔ)在 output_files 文件夾中,這些是您的證書(shū)并且是私有的。這些證書(shū)將在構(gòu)建期間加載到設(shè)備上的 SPIFFS 中,并用于與 AWS 的安全通信。
設(shè)備構(gòu)建和上傳
連接 M5 Core2 AWS EduKit 設(shè)備、完成 AWS 后端、為您的環(huán)境預(yù)置和配置設(shè)備后,您就可以構(gòu)建固件并上傳到您的設(shè)備了。
我喜歡使用位于 IDE 底部的 platformio 工具欄:
勾選=構(gòu)建
箭頭 = 上傳到設(shè)備
垃圾箱/垃圾=干凈
插頭 = 監(jiān)控串行輸出
終端 = 新的 platformio 終端
使用勾選,構(gòu)建項(xiàng)目,然后使用箭頭上傳到設(shè)備,終端輸出將顯示當(dāng)前狀態(tài)。一旦上傳完成,它應(yīng)該會(huì)自動(dòng)切換到監(jiān)聽(tīng)輸出,但如果沒(méi)有按下插頭按鈕切換到監(jiān)聽(tīng)。
您可以看到在正常操作下,串行輸出將提供有關(guān) tyhac 操作方式的一些有用細(xì)節(jié)。在下一節(jié)中,我將詳細(xì)介紹每個(gè)不同的指標(biāo)和消息的含義。
專(zhuān)業(yè)提示:如果您單擊工具欄中的 platformio 監(jiān)視器按鈕,請(qǐng)注意按鈕位置是否像視頻中那樣移動(dòng)。啊。
設(shè)備狀態(tài)指示燈和串行輸出
M5 Stack Core2 AWS EduKit 在設(shè)備的兩側(cè)帶有兩個(gè) RGB 條,所以我想我們也可以使用它們。現(xiàn)在您的設(shè)備正在運(yùn)行 tyhac 固件并與 AWS 通信,您可能會(huì)注意到發(fā)生了不同的指標(biāo)。
橙色 = 正在連接或處理,這可以用于 Wifi 或 AWS MQTT
綠色 = 操作正常,例如 wifi 已連接
紅色 = 嚴(yán)重錯(cuò)誤,很可能無(wú)法連接到 Wifi
白色 = 正常操作模式
注意:預(yù)測(cè)顯示使用相同的顏色。例如正負(fù)綠色和紅色。
顯示屏和串行輸出中的狀態(tài)消息大多是不言自明的:
MQTT = 訂閱、接收、連接
Heartbeat = 以當(dāng)前模式每分鐘向 AWS 發(fā)送一條心跳 MQTT 消息
NTP = 與遠(yuǎn)程時(shí)間服務(wù)器同步
Screen = LCD 屏幕相關(guān)項(xiàng)目,例如更改顯示
按鈕 = 切換模式,例如被動(dòng)或臨床醫(yī)生(主動(dòng))
Tyhac 設(shè)備庫(kù)
我嘗試將代碼拆分為庫(kù),以便更輕松地管理代碼庫(kù)并允許其他人使用其他項(xiàng)目所需的位:
音頻 = 與將音頻從麥克風(fēng)錄制到 SD 卡相關(guān)的所有內(nèi)容
env = 您的環(huán)境特定配置
mqtt = 與 AWS 發(fā)布/訂閱 MQTT 相關(guān)的所有內(nèi)容
ntp = 使用遠(yuǎn)程 NTP 服務(wù)器設(shè)置時(shí)鐘
rgbcolor = 管理 RGB 條帶
ui = 與液晶屏界面相關(guān)的一切
上傳 = 與通過(guò) HTTPS 上傳 AWS S3 相關(guān)的所有內(nèi)容
version = 只是一個(gè)版本文件
例如,如果您想更改 RGB 的顏色,您只需轉(zhuǎn)到 lib/rgbcolor 庫(kù)并使用您選擇的 RGB 值更新 changeRgbColor 函數(shù)或添加不同的顏色等。
Step4:AWS-Sagemaker 可選模型訓(xùn)練
關(guān)于 sagemaker,我不會(huì)過(guò)多介紹。正如我之前所說(shuō),除非您想自己理解或希望維護(hù)模型,否則您不需要執(zhí)行此部分。我對(duì) sagemaker 采取的基本方法是我需要 CPU、GPU 和存儲(chǔ),而我根本沒(méi)有,AWS 以低成本按需為我們提供這些。
專(zhuān)業(yè)提示:我已采取措施通過(guò)使用現(xiàn)貨市場(chǎng)進(jìn)行培訓(xùn)來(lái)降低與 sagemaker 相關(guān)的成本,這應(yīng)該會(huì)節(jié)省約 70% 的成本,具體取決于您所在的地區(qū)和 AWS 市場(chǎng)。但是,這仍然是該項(xiàng)目中成本最高的部分,請(qǐng)確保您監(jiān)控成本并設(shè)置計(jì)費(fèi)警報(bào)并在完成后刪除任何內(nèi)容。
AWS Sagemaker 工作室
我最終使用了sagemaker studio ,因?yàn)樗鼮槲姨峁┝撕芏喙δ埽铱梢允褂?Studio IDE 在標(biāo)準(zhǔn)瀏覽器中構(gòu)建、訓(xùn)練和部署所有功能,考慮到我們的時(shí)間框架很短,這很有意義。AWS 提供了更多關(guān)于為什么首選 Studio 的信息。如果您在 AWS 中有自己的設(shè)置或標(biāo)準(zhǔn)筆記本實(shí)例,您應(yīng)該能夠在本地執(zhí)行此操作。這將進(jìn)一步降低成本,但會(huì)花費(fèi)您更多的時(shí)間。
創(chuàng)建賢者工作室
使用瀏覽器中的 AWS 控制臺(tái)前往 sagemaker 并使用登錄頁(yè)面點(diǎn)擊橙色的“SageMaker Studio”按鈕。
使用“快速啟動(dòng)”選項(xiàng),這將為您設(shè)置和環(huán)境所需的權(quán)限。一旦您接受配置 AWS 將開(kāi)始配置您的環(huán)境,這將需要幾分鐘但只是一次。
當(dāng)您的配置準(zhǔn)備就緒時(shí),您會(huì)注意到一條橫幅消息,如下所示:
您應(yīng)該注意到“Open Studio”單擊可用,這將啟動(dòng) AWS SageMaker Studio Web IDE,以便我們開(kāi)始。
如果這不可用,您的環(huán)境可能仍在配置中,或者您需要使用“分配用戶(hù)和組”按鈕來(lái)關(guān)聯(lián)您的用戶(hù)帳戶(hù)。
啟動(dòng) SageMaker studio 后,您會(huì)看到一個(gè)可愛(ài)的 SageMaker 徽標(biāo)加載屏幕,第一次啟動(dòng)往往需要更長(zhǎng)的時(shí)間,之后會(huì)更快。
加載 Studio 后,您將進(jìn)入 Studio IDE:
我真的很喜歡 Studio IDE,在大多數(shù)情況下,我發(fā)現(xiàn)它非常直觀且視覺(jué)上非常好用。因?yàn)槲覀儗⑻砑右粋€(gè) git 存儲(chǔ)庫(kù),所以我們可以使用 git 圖標(biāo)來(lái)加載 tyhac 存儲(chǔ)庫(kù)并點(diǎn)擊“克隆存儲(chǔ)庫(kù)”:
克隆后,您會(huì)注意到熟悉的 tyhac 代碼庫(kù)結(jié)構(gòu),導(dǎo)航到 aws-sagemaker 以使用我們需要的文件:
用于 fastai 培訓(xùn)的Docker容器
當(dāng)您需要執(zhí)行訓(xùn)練時(shí),AWS SageMaker 將提交訓(xùn)練作業(yè)并啟動(dòng)您為訓(xùn)練指定的計(jì)算、GPU、內(nèi)存實(shí)例或?qū)嵗?/font>AWS SageMaker 為各種框架提供了一堆預(yù)配置的容器,讓您可以繼續(xù)使用,例如 tensorflow、pytorch 等。當(dāng)您想要使用不同的東西時(shí),您可以使用您的自定義框架構(gòu)建容器。這就是我所做的。存儲(chǔ)庫(kù)中的 docker 文件夾包含構(gòu)建容器并將其推送到您的 AWS ECR 所需的代碼,以供 SageMaker 在需要時(shí)使用。
專(zhuān)業(yè)提示:與前面的提示一樣,如果您的互聯(lián)網(wǎng)速度較慢或不想配置 docker 等,AWS Cloud9 在這里是一個(gè)很大的幫助。
您會(huì)注意到兩個(gè)容器,一個(gè)用于訓(xùn)練,一個(gè)用于推理。如果您想訓(xùn)練模型并在 tyhac 后端替換它,則無(wú)需擔(dān)心推理容器。如果您想使用專(zhuān)用 SageMaker 端點(diǎn)運(yùn)行推理,則包含容器代碼和筆記本。
要構(gòu)建容器,您需要再次使用 aws cli 進(jìn)行身份驗(yàn)證,更新 Dockerfile 以反映您的 AWS 區(qū)域,然后只需運(yùn)行 shell 腳本:
./build_and_push.sh
SageMaker 圖表
使用圖表更容易理解 SageMaker、ECR 和筆記本如何連接在一起。下圖顯示了 tyhac 筆記本和服務(wù)如何協(xié)同工作:
使用筆記本_
Studio IDE 和筆記本將為您提供運(yùn)行所需的一切,只需打開(kāi)筆記本并逐步瀏覽單元格:
在大多數(shù)情況下,我使用 AWS 的 tensorflow 內(nèi)核并添加了幾個(gè)我需要的包。您可以在 IDE 頂部更改內(nèi)核。
數(shù)據(jù)可視化
完成一些數(shù)據(jù)準(zhǔn)備后,在您開(kāi)始訓(xùn)練之前,會(huì)出現(xiàn)包含數(shù)據(jù)可視化的單元格,下面顯示了來(lái)自 covid-19 陽(yáng)性和陰性患者的樣本。輸出是我們用于訓(xùn)練的音頻梅爾譜圖:
我們可以進(jìn)一步挖掘數(shù)據(jù)集以顯示我們當(dāng)前的標(biāo)簽和頻譜圖:
訓(xùn)練
一旦您對(duì) dataprep 感到滿(mǎn)意,您就可以進(jìn)入訓(xùn)練筆記本,這將運(yùn)行 sagemaker 訓(xùn)練作業(yè)并將模型文件輸出到 s3,您可以更新筆記本中的超參數(shù)和模型架構(gòu):
hyperparams = { 'epochs' : 1,
'learning-rate': 0.001, # fastai default
'batch-size' : 64, # fastaudio default
'model-arch' : 'resnet18', # resnet34
'workers' : 16 # default 2
}
您將需要為您的帳戶(hù)更新容器位置:
image_uri = 'ACCOUNTID.dkr.ecr.ap-southeast-2.amazonaws.com/tyhac-sagemaker-fastai:1.0-gpu-py36',
我開(kāi)發(fā)的 notebook 會(huì)輸出一些圖像,您可以使用這些圖像查看模型性能:
在 AWS 中更新模型
如果您對(duì)模型感到滿(mǎn)意,您只需從 sagemaker S3 存儲(chǔ)桶下載 model.tar.gz,提取內(nèi)容并將 export.pkl 復(fù)制到 aws-cdk/src/lambda/predictor/model 文件夾中。
然后更新您的 AWS CDK 部署:
cd aws-cdk
projen deploy
現(xiàn)在,當(dāng) tyhac M5 Core AWS EduKit 事物接收到新樣本以對(duì)其執(zhí)行推理時(shí),將使用您新訓(xùn)練的模型。簡(jiǎn)單的!
第五步:清理
一旦您完成了項(xiàng)目并且您不再需要運(yùn)行任何 tyhac AWS 堆棧,我們應(yīng)該刪除它們。
因?yàn)槲覀兪褂昧?CDK,所以移除堆棧很容易
您首先需要使用 AWS 管理控制臺(tái)從 AWS IoT 核心 CDK 策略中刪除設(shè)備證書(shū),然后:
cd aws-cdk
projen destroy
專(zhuān)業(yè)提示:您還可以通過(guò) AWS 控制臺(tái)使用 cloudformation 來(lái)刪除堆棧。
這將留下以下需要手動(dòng)刪除的內(nèi)容:
- AWS S3 存儲(chǔ)桶
- AWS DynamoDB
- AWS ECR(容器)
導(dǎo)航到 AWS 控制臺(tái)中的這些服務(wù)以清空和刪除它們。
如果您配置了 SageMaker Studio:
- 導(dǎo)航到 SageMaker Studio
- 點(diǎn)擊用戶(hù),刪除關(guān)聯(lián)應(yīng)用
- 刪除用戶(hù)
- 回去
- 刪除工作室
導(dǎo)航到 AWS EFS
- 選擇 EFS 卷,然后刪除
專(zhuān)業(yè)提示:如果您有多個(gè)卷檢查標(biāo)簽,SageMaker 會(huì)標(biāo)記與 SageMaker 關(guān)聯(lián)的卷。
困難/挑戰(zhàn)
我現(xiàn)在將討論我在這個(gè)項(xiàng)目中遇到的一些挑戰(zhàn),劇透有很多(現(xiàn)在仍然如此):)
使用SageMaker 進(jìn)行深度學(xué)習(xí)
- 你怎么能從音頻中預(yù)測(cè)任何東西?
這是一個(gè)兔子洞,試圖了解我如何使用音頻咳嗽來(lái)預(yù)測(cè)任何事情。一旦我開(kāi)始研究這個(gè)問(wèn)題,我就能找到一些非常棒的信息和研究論文(參見(jiàn) repo)。最后,最好的方法是使用具有已知架構(gòu)的梅爾譜圖和卷積神經(jīng)網(wǎng)絡(luò)。使用音頻圖像,而不是查看音頻樣本的數(shù)字?jǐn)?shù)據(jù)點(diǎn)。
- 資料準(zhǔn)備,資料準(zhǔn)備,資料準(zhǔn)備
這似乎永無(wú)止境,下載數(shù)據(jù),排序數(shù)據(jù),找到標(biāo)簽,沖洗并重復(fù)。發(fā)現(xiàn)沒(méi)有足夠的數(shù)據(jù),盡可能調(diào)整以獲得更多數(shù)據(jù),然后意識(shí)到我在數(shù)據(jù)準(zhǔn)備中犯了一個(gè)錯(cuò)誤,需要重做。耗時(shí)但關(guān)鍵的堆棧部分。
- 超參數(shù)、音頻參數(shù)、框架
時(shí)代?優(yōu)化器?一種全新的語(yǔ)言,我在訓(xùn)練一個(gè)完全有效的模型時(shí)遇到了很多麻煩。嘗試了各種框架但沒(méi)有成功,我?guī)缀醴艞壛诉@個(gè)項(xiàng)目,并準(zhǔn)備寫(xiě)下我的失敗。我會(huì)不斷地訓(xùn)練一個(gè) ROC 為 0.5 的模型,這是一個(gè)完全沒(méi)用的模型。FastAI 真的把我從我自己那里救了出來(lái),一旦我改用 fastai,我就能夠訓(xùn)練一些有用的東西,將它與 fastaudio 配對(duì)對(duì)音頻組件有相同的效果。
- 只是使用更多的 CPU 內(nèi)核,反正誰(shuí)需要 GPU
切換到 FastAI 后,我需要為框架構(gòu)建自定義 docker 容器。這很棒,但是,我在訓(xùn)練期間注意到從未使用過(guò) GPU。我把這個(gè)問(wèn)題放在了待辦事項(xiàng)上,并投入了更多的 CPU(不聰明),以使每個(gè)周期的訓(xùn)練時(shí)間達(dá)到 5-7 分鐘左右。我最終發(fā)現(xiàn) tensorflow 所需的軟件包是根據(jù)您的系統(tǒng)安裝的,我的本地系統(tǒng)缺少 NVIDIA GPU 并安裝了 CPU 軟件包。調(diào)整 Dockerfile 以提取 GPU 包意味著 GPU 已被使用,并且周期下降到大約 1 分鐘。這意味著,更多的成本節(jié)省,更少的時(shí)間!
- 好的,我有一個(gè)訓(xùn)練有素的模型,現(xiàn)在呢?
自定義容器和 SageMaker 推理。這過(guò)于復(fù)雜,如果您想使用 SageMaker 端點(diǎn),您需要在 SageMaker 推理要求的框架內(nèi)工作。您的服務(wù)腳本中需要某些功能,這些功能只需要存在即可。我為此奮斗了最長(zhǎng)時(shí)間,認(rèn)為這不是真的,但現(xiàn)在理解了結(jié)構(gòu)化方法。
M5 Core2 堆棧 Arduino
- Micropython,不,arduino
我想快點(diǎn),我正在為 SageMaker 開(kāi)發(fā) python 筆記本,我知道 M5 Core2 可以使用 micropython。我最初對(duì) micropython 的實(shí)驗(yàn)并不順利,很早就很清楚我試圖做的事情超出了設(shè)備上 micropython 的范圍,因?yàn)闀r(shí)間限制。我的下一個(gè)目標(biāo)是 arduino,它最終運(yùn)行良好。該設(shè)備支持多種語(yǔ)言真是太好了。我認(rèn)為轉(zhuǎn)移到 esp-idf 將是一個(gè)很好的下一步。
- LM393是麥克風(fēng)嗎?
我以為這是麥克風(fēng),而不僅僅是聲音傳感器。我最初的設(shè)計(jì)需要一個(gè)觸發(fā)器來(lái)啟動(dòng)錄音,這就是我購(gòu)買(mǎi) LM393 的原因,但我也認(rèn)為它是一個(gè)更高質(zhì)量的麥克風(fēng)。我必須快速適應(yīng)使用內(nèi)置麥克風(fēng)。
- SM1423 內(nèi)置麥克風(fēng) I2S
內(nèi)置麥克風(fēng)使用 I2S,這與我過(guò)去沒(méi)有任何關(guān)系。試圖了解如何從 I2S 接口讀取數(shù)據(jù)并將其寫(xiě)入文件是一項(xiàng)挑戰(zhàn)。關(guān)于 arduino、SDCards 和 wav 文件有一些例子,但并不多。大量的試驗(yàn)和錯(cuò)誤。
- 我只想通過(guò) HTTPS 將文件上傳到 S3,有什么用?
我無(wú)法計(jì)算出 AWS S3 所需的標(biāo)頭,它會(huì)不斷被 S3 拒絕。大量的調(diào)試、更改文件類(lèi)型、查看標(biāo)題等,我最終得到了它的工作。我找不到任何關(guān)于如何使用 arduino 執(zhí)行此操作的明確示例。據(jù)我所知,我的示例是迄今為止唯一公開(kāi)可用的已知工作示例。
- 嘿,酷,RGB燈,讓我們使用它們,這不是橙色的嗎?
在經(jīng)歷了所有挑戰(zhàn)之后,我決定繞道而行,用 RGB 燈玩一玩。原來(lái) fastled 庫(kù)中的 RGB 燈出現(xiàn)故障,我會(huì)嘗試制作橙色,它會(huì)以不同的方式結(jié)束。一旦我理解了這個(gè)問(wèn)題,在我的代碼中交換值就可以更容易地選擇我的 RGB 顏色,然后讓我的函數(shù)句柄交換。都是些小事...
- 搬家,網(wǎng)速慢,AWS Cloud9 來(lái)拯救
在我搬家的項(xiàng)目快結(jié)束時(shí),新位置的下載速度不錯(cuò),但上傳可能會(huì)更好。通常這不是問(wèn)題,但我的堆棧嚴(yán)重依賴(lài)需要上傳到 AWS ECR 的容器。當(dāng)我處理設(shè)備和分段/預(yù)測(cè) lambda 函數(shù)時(shí),我需要快速迭代代碼更改。進(jìn)行簡(jiǎn)單的更改需要 20、30、60 分鐘。
我最終切換到 AWS Cloud9 進(jìn)行 aws-cdk 部署,這將容器更改的時(shí)間縮短到 2-5 分鐘。托管服務(wù)的啟動(dòng)和運(yùn)行快速、簡(jiǎn)單且具有成本效益。切換到 Cloud9 只需幾分鐘,如果沒(méi)有它,我將無(wú)法完成挑戰(zhàn)。
下一步
這個(gè)項(xiàng)目是一個(gè)很好的開(kāi)始,可以端到端地展示您如何使用 M5 Core2 AWS EduKit 解決這個(gè)問(wèn)題。有許多改進(jìn)和未來(lái)的機(jī)會(huì)可以考慮:
- 設(shè)備注冊(cè)
我正在使用 RSA 證書(shū)身份驗(yàn)證(根據(jù) AWS 控制臺(tái)),M5 堆棧包含一個(gè)安全硬件元素。我最初試圖讓它與 arduino 一起工作的嘗試沒(méi)有奏效。AWS 在 M5 Stack 存儲(chǔ)庫(kù)中有一個(gè)修改過(guò)的庫(kù),我懷疑這是它工作所必需的。
- 嘗試不同的麥克風(fēng)
我想使用不同的麥克風(fēng),看看社區(qū)可能會(huì)推薦什么來(lái)提高音頻質(zhì)量。
- 局部推理
一個(gè)不錯(cuò)的改變是嘗試將模型推理帶到設(shè)備本身,但在 AWS 中更接近邊緣時(shí)失敗。這將減少推理時(shí)間,但是基于數(shù)據(jù)進(jìn)行訓(xùn)練仍然會(huì)很好,后臺(tái)上傳可能需要研究。
- 更多數(shù)據(jù)
該模型與數(shù)據(jù)一樣好,它需要更多。看看公共數(shù)據(jù)是否繼續(xù)增長(zhǎng)將會(huì)很有趣,這可能有助于用新數(shù)據(jù)重新訓(xùn)練模型并提高準(zhǔn)確性。
- 不同的設(shè)備
因?yàn)槎褩J墙怦畹模覀儙缀蹩梢允褂萌魏斡涗浺纛l的設(shè)備來(lái)執(zhí)行此操作。我們可以利用任何可能已經(jīng)在錄制音頻的現(xiàn)有公共服務(wù)嗎?
最后的想法
我度過(guò)了很愉快的時(shí)間來(lái)應(yīng)對(duì)這個(gè)挑戰(zhàn),這是對(duì) M5 Core2 Stack 的一個(gè)很好的介紹,它是一個(gè)非常強(qiáng)大的設(shè)備,非常適合像這個(gè)堆棧或更復(fù)雜的堆棧這樣的快速原型設(shè)計(jì)。我喜歡 AWS IoT 如何成為您所有 IoT 相關(guān)服務(wù)的中心點(diǎn),從該中心服務(wù)與 AWS 安全交互的能力使得設(shè)計(jì)和與 DynamoDB 和 Lambda 集成變得容易。
我希望這個(gè)項(xiàng)目對(duì)其他人有用,可以在此基礎(chǔ)上進(jìn)行構(gòu)建、擴(kuò)展或獲取他們需要的部分,以使他們的原型或產(chǎn)品起步。
感謝 Hackster 和 AWS 將這一挑戰(zhàn)放在一起,并創(chuàng)建了一個(gè)社區(qū)以使這成為可能。
快樂(lè)編碼。
- COVID-19印度更新程序開(kāi)源分享
- COVID-19最新項(xiàng)目
- COVID-19危機(jī)-發(fā)燒警報(bào)系統(tǒng)開(kāi)源分享
- COVID-19消毒和監(jiān)測(cè)隧道開(kāi)源項(xiàng)目
- 自動(dòng)COVID-19貨幣消毒器開(kāi)源分享
- COVID-19短信警報(bào)
- COVID-19額溫槍開(kāi)源分享
- COVID-19密度追蹤器開(kāi)源分享
- 適用于Covid-19的免費(fèi)診斷移動(dòng)應(yīng)用程序和DIY防護(hù)面罩
- 一款Covid 19疾病監(jiān)測(cè)器開(kāi)源分享
- COVID 19社交距離提醒開(kāi)源分享
- 基于手勢(shì)的Covid 19面具
- covid 19使用arduino洗手
- Covid19健康監(jiān)測(cè)系統(tǒng)
- 開(kāi)源COVID 19肺呼吸機(jī)
- 堆棧和內(nèi)存的基本知識(shí) 191次閱讀
- 如何使用音頻接口播放音頻文件 267次閱讀
- 如何使用Polyspace Code Prover來(lái)統(tǒng)計(jì)堆棧 243次閱讀
- 什么是堆棧溢出?如何分配堆棧空間大小? 3492次閱讀
- 使用D類(lèi)音頻放大器診斷汽車(chē)故障 824次閱讀
- 任務(wù)堆棧的檢測(cè)方法 2357次閱讀
- 詳解C/C++堆棧的工作機(jī)制 1020次閱讀
- 一款由3D打印筆制造的針狀SARS-CoV-2基因傳感器 1740次閱讀
- 單片機(jī)堆棧的基本原理解析 4493次閱讀
- 什么是單片機(jī)堆棧?單片機(jī)堆棧有什么作用和原理說(shuō)明 2w次閱讀
- 詳解單片機(jī)堆棧 5942次閱讀
- 基于單片機(jī)設(shè)計(jì)堆棧的基本概念解析 1126次閱讀
- 基于FPGA的16位堆棧處理器的設(shè)計(jì) 3311次閱讀
- 實(shí)時(shí)診斷技術(shù):滿(mǎn)足汽車(chē)視音頻傳輸線路需求 1038次閱讀
- 檢測(cè)線束中的開(kāi)路和短路的診斷技術(shù) 5106次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多