ISC23 歐洲行 - 賽中及展覽參訪

比賽中

這次飛機的行程是:

航空公司 航班號碼 航段 (起點 → 終點) 執飛機型
中華航空 (China Airlines) CI921 台北 (TPE) → 香港 (HKG) Airbus A330-300
德國漢莎航空 (Lufthansa) LH797 香港 (HKG) → 法蘭克福 (FRA) Airbus A340-300
德國漢莎航空 (Lufthansa) LH6 法蘭克福 (FRA) → 漢堡 (HAM) Airbus A319neo
德國漢莎航空 (Lufthansa) LH772 慕尼黑 (MUC) → 曼谷 (BKK) Airbus A380-800
長榮航空 (EVA Air) BR68 曼谷 (BKK) → 台北 (TPE) Boeing 777-300ER

到一次漢堡十分不容易,除了阿聯酋土豪航班以外,都需要 > 2 次轉機,最後老師買到的機票包含了三家航空公司,華航、漢莎及長榮。

從台灣出發後,沒想到在法蘭克福轉機時飛機大延誤,第一次上飛機後莫名原因(德語聽不懂)被趕下來,第二次上飛機後又因為 Towing Bar 斷掉被趕下飛機,最後甚至走停機坪上飛機。

上飛機又下飛機,登機門旁的「Willkommen/Welcome」彷彿在嘲笑我們永遠無法起飛,最終延誤 3 小時 55 分鐘,也在未來觸發了我第一次官司,請律師跟航空公司周旋,遙遠的一年後終於獲得了賠償金,第一次前往歐洲就體驗到了歐洲的精髓。
最後一次上飛機,居然是走機坪

在台灣沒有什麼機會直接從機場建築走機坪上飛機的,大家都滿興奮
Wellkommen 是我第一個學會的德語單字

幾經波折終於抵達德國漢堡,這一路折騰唯一可圈可點的大概是漢莎航空的巧克力,為了安撫旅客的情緒,每次宣布延誤他們空服人員就會出來發一批巧克力和水,我喜聞樂見的每次都拿兩三個,來安撫我疲憊又受傷的心靈。
終於要從機場搭車前往 Hotel,全憑意志力支撐
放了行李,吃了人生第一顆在漢堡吃的漢堡後,在市區隨意逛逛。
第一天先朝聖市政廳 Rathaus 是我第二個學會得德文單詞,搭地鐵不斷看到。

歐洲的鳥看起來都比我有錢

漢堡感覺很像德國威尼斯,舊城區交織著無數的水道

水溝蓋也有城堡

其中最重要得事情就是去超市囤糧,作為窮學生,基本上外食沒有東西是我們吃的起得,靠超市度過接下來五天的早餐還是很有必要的。一般來說我都靠一包吐司+一罐草莓果醬,配上幾罐大罐的可樂/盜版可樂,剛好夠吃五天的早餐,
第一個在歐洲度過的落日,是漂亮的漸層

比賽期間 - Day 0

比賽一早,前往 CCH,眾多研討會、活動都在這邊舉行,例如年度盛事 CCC 及不少工程類展覽等,近幾年 ISC 似乎也都在這邊舉辦。大致的行程是:Day0(5/21) 架設機器,Day1~Day3(5/22~5/24)比賽,Day3 下午頒獎。


一到會場,機器就直接被堆在我們的 Booth 攤位前,這點比起美國 SC22 真是十分貼心,不用滿場跑來跑去跟貨運公司溝通,感覺德鐵 DB 在送貨方面比起送人可靠多了。
由於贊助商、物流等緣故,顯卡及機器是分開配送的,因此熟練地拆開紙箱,把好貴好貴的 GPU 鎖扣上 Riser,固定在主板上,最後上機櫃、接上電源線、網路線、光纖,開機測試,別忘了在旁邊擺上關鍵的「乖乖」,大功告成!雖然我說的很簡單,但其實挺複雜的前前後後還是弄到晚上八點,去最近的餐廳麥當勞買幾個漢堡打發一下漢堡時間,歐洲 Smart 套餐提供很便宜的選項足夠餵飽大家。
安裝 NVIDIA A100 到 Riser 再到伺服器上
比賽很趕,線可以亂,乖乖一定要上。比賽一般不允許使用 WiFi 連接,所有筆電都必須接有線網路,SCC 甚至很嚴格得會用 wifi snooper 監控。

每個隊伍的空間其實不是很大,就一個展覽攤位而已,隊員需要跟伺服器共存,安排桌子及伺服器的擺放位置也是一門學問,怎麼樣才能方便進出又不會被吵死,同時保證好一點的散熱。

比賽期間 - Day 1~3

ISC 是歐洲主辦的比賽,整體有種「歐洲風格」:

  1. 比賽期間允許睡覺,僅能在白天操作機器並當天繳交當天的結果,不像是 SCC 需要 48 小時不間斷的顧著機器,體現了歐洲人 work life balance 的風格。
  2. 比賽規則較為寬鬆,很多東西都沒有明確規定,想法都是可以嘗試的,但同時也代表很容易被規則雷。舉例來說主辦單位突然說什麼可以做/不可以做,就會打亂原先得計劃。例如 POT3D 在比賽期間突然允許使用 cuSparse 導致我們的許多優化突顯不出效果 🫠
  3. 整體而言,因為不像 SC 有很多需要臨場反應的事件,例如:決賽測試資料相較於初賽測試資料改動較少、沒有不定時調整功耗上限等需求,因此整體比賽起來相對輕鬆的,

對我來說,比起 SCC、ASC,ISC 參賽隊員都有更多的時間去跟其他隊伍交流、逛攤位、擴展視野。由於我們通常很早到且很晚走,所以大部分攤位都很空,E 人可以快樂的跟工作人聊天沒人打擾,I 人可以快樂的逛展覽沒人打擾,皆大歡喜!另外,在這國際場合其實台灣公司的佔比並不低,很常走著走著就可以聽到台灣人講話、談生意的聲音,如果害怕英文溝通,先跟台灣人聊聊也是不錯的選擇。
宣布比賽開始沒有什麼特別的儀式,把大家叫過來,完成指定任務比賽就開始了,我們那年是要去整個展場找埋伏的志工,收集自己隊伍的衣服後就能換得含有題目的隨身碟。
好像是來自華為的關心?他們都會送很多贈品嘗試招人
逛展場,有人知道照片右後方的 FUSION 這間公司嗎?
現場也有不少設備商展示不同零組件或接口,例如這是 200G HDR 網路線,當下把一整套都拍起來想說可以當教材
歐洲 Conference 在開幕得第一天,都會有 Happy Hour,每個 Booth 會突然變成 Bar 一起快樂喝酒聊天。
又因為每天晚上不能操作,所以在完成當天檢討以及隔天的計劃後,就能夠參與各大公司辦理的 Reception(接待晚宴),真實體驗學術研討會的各種交流場合及交流方式。我們參加的這場是由 AWS 和 NVIDIA 贊助的活動,每年都固定在 Hofbräu Hamburg 這間巴伐利亞餐廳,雖然漢堡離巴伐利亞地區非常遠,但這種料理卻充分展現德國風情。



我們會跟比較熟識的學校一起相約在同一場 Reception,酒過三巡,不敢講英文的同學也會自然地聊起天來,第一天就能有這樣的活動大大促進了後續的交流。

比賽期間-頒獎與場撤

在三天的比賽後,我們獲得了第二名,這是清大隊伍第一次在 ISC 取得名次,大家都非常雀躍。對我個人而言,雖然沒能在三大國際賽事拿到三連冠,但或許留有點遺憾,將成爲我超算生涯最好的結果。
團隊成員站上領獎台,記得要請朋友幫忙拍照,官方照片好久才拿到/或拿不到
跟其他國家的得獎隊伍合照,還有很多搞笑照片,但我仍然選擇放上最正常的一張
與主辦單位、其他學校的學生教練和工作人員分享台灣的特殊文化—乖乖的故事
漢堡 CCH 的大會議廳旁邊有一個景深很深的空間,暗灰色的背景很適合拍得獎照片,幫每個人都拍了一張

最後的行程當然是把機器收好寄回台灣啦!怎麼拆箱怎麼組的就要怎麼把它裝回去,感謝 QCT 雲達科技的贊助,讓我們今年也有這麼好的成果!
跟國網中心和 QCT 的工作人員合照,這三天他們不只要在攤位上行銷台灣及公司,還要實時支援我們!
雖然得獎很開心,但場撤的死線也很緊張,大家都要邊聊天邊瘋狂裝箱準備將機器運回台灣
廣達的工程師也來幫我們完成最後的收拾及打包,要用這個膜把箱子捆在棧板上固定住,方便運送
這樣就大功告成了!貼上 DB 送來的標籤,剩下就交給貨運公司了
在漢堡的 [Außenalster](https://maps.app.goo.gl/eA7XH4owJ3eQJhM86) 湖旁合照,結束這回合,此時的我沒有想到明年還會再次踏足這裡。
最後晚餐感謝贊助商廣達請客,在一間很漂亮的湖邊餐廳 - [Alsterpavillon](https://maps.app.goo.gl/u1bV5ooyYEHzz8nZ6)
餐廳靠湖一側,有一小塊陽台,可以悠哉拍照,不用擔心東西被偷。
以這隻看著量子電腦模型的清大熊貓收尾!期待 HPC 產業、清大超算、及我個人都能持續成長!

接下來就是大家期待已久的歐洲畢業旅行行程了!

ISC23 歐洲行 - 賽前準備及旅遊安排

沒想到人生第一次踏上歐洲,竟是跟著清大超算團隊出國參加競賽!舉辦這次競賽的是 ISC High Performance 德國超高速運算電腦展會底下的 HPC-AI ADVISORY COUNCIL,由於 ISC 及該主辦單位並不提供參賽隊伍住宿與機票補助,清大超算團隊過往不會主動報名歐洲的 ISC 比賽,通常只有在 HPC-AI 線上賽或 SCC 奪得冠軍的隊伍,才會因為獲得主辦方正式邀請前往參賽。

這次有幸能參加 ISC23 主要是因為我們在 SC22 獲得冠軍獲得保障名額,如同前段所說,我們並不預期自己的超算生涯中會前往歐洲參賽,因此這次參賽對我們來說有點畢業旅行的感覺。總之,願我們都能享受比賽、享受旅行。

比賽前

行程分為兩部分

  • 2023/05/20-2023/05/25 ISC23 現場比賽 - 德國漢堡
  • 2023/05/25-2023/06/03 賽後旅行 - 超算畢業旅行

比賽規則

學生叢集競賽是一場結合高效能運算 (HPC) 硬體建置與軟體效能調校的綜合性挑戰。參賽團隊必須在嚴格的 4500W 電力功耗限制下,平衡硬體耗電與運算效率,從零開始構建一套足以支撐大規模科學模擬的運算系統。
競賽題目設計兼顧了「研究開發」與「臨場應變」。除了一項秘密題目 (Mystery Application) 外,其餘三項題目皆於賽前數個月公布,讓團隊有充足時間進行硬體選型、軟體安裝與初步優化。

題目類別 應用程式名稱 技術特徵與挑戰 評分關鍵
A. 電子結構計算 Quantum ESPRESSO 基於密度泛函理論 (DFT) 的開源平行程式,考驗選手在叢集上對材料建模模擬的效能優化能力。 執行時間、面試表現
B. 流體動力學 FluTAS 針對多相流體模擬的框架,支持跨 CPU 與多 GPU 的高效能模組化運作。 指定 Timestamp 之執行速度
C. 太陽磁場模擬 POT3d 使用 MPI 與 HDF5,並結合 OpenACC cuSparse 進行 GPU 加速,處理光球磁場邊界條件計算。 完成磁場模擬,越快越高分
D. 秘密題目 MILC (Mystery) 比賽現場方才揭曉題目。參賽隊伍必須在有限時間內,針對現場機器環境進行即時編譯與優化,挑戰臨場活用能力。 完成現場模擬,越快越高分

我們會在這樣的 Booth 內比賽,伺服器機櫃及所有參賽隊員都需要在這裡面,一起在這裡拼搏兩天

初賽分工

就和每一次超算比賽一樣,我們進行題目的分工,共有三題:

以下為技術內容,非作戰人員建議跳到「出國前準備」

System

這次我們使用的是 A100 * 4 的機器,共計 4 台,透過 Infniband 高速網路連接,大致上與 SC22 相同,裝機後要執行 HPL、HPCG 等常見的 Benchmark 軟體,需要使用一些 binding 相關的知識來加速,由於已經是我參與過的第三場國際比賽了,大致上沒什麼特別的,這次許多任務也轉交給比我更擅長系統管理的 Yi Kuo ,更是讓他體驗了一把 HPL 驚心動魄的功耗挑戰。
系統安裝滿需要經驗及練習,但由於設備十分昂貴,我們常常都在比賽當場才碰到真機,因此更考驗臨場學習及應變的能力。安裝之後便是執行系統跑分,要注意功耗不能超過主辦單位的限制

POD3D

【科學角度】POT3D(Potential Field Solver in 3D)用於計算以觀測到的光球磁場作為邊界條件,近似太陽冠磁場的電位場解。它可用於生成電位場源面(PFSS)、電位場電流片(PFCS)和開放磁場(OF)模型。

https://iopscience.iop.org/article/10.3847/1538-4357/abfd2f/pdf
【資工角度】使用老朋友 Fortran 撰寫,CUDA-aware MPI 和 OpenACC 進行多節點多 GPU 加速,同時也提供使用 NVIDIA cuSparse 庫的選項。輸入/輸出使用 HDF5 文件格式。
【評分方式】:比賽單位提供了一組測資,用以模擬及計算磁場,時間越短的隊伍分數越高。

我主要花時間在做 System 以及 Library 的安裝、測試和性能分析,主要發現了 UCX 和 NVHPC 分別對 P2P 和 All Reduce 有更好的性能。既然是成熟的大人了,那就是「我全都要」,追根究底後發現,NVHPC 的 P2P 性能較差是因為 NVHPC 選到了比較爛的 cu API,而 UCX 在 All reduced 性能較差是因為 UCX 在用 gcc 編譯時會有一個 Bug 導致 UCT Layer 沒有正常識別,在更換成 Intel Compiler recompile UCX 後 All reduced function 從 2.6ms 縮減至 1ms。這個問題在隔年被我衍伸、出題成了清大平行程式課程的作業。

黃恩明 專注在使用 Nsight Compute 觀察 GPU 計算及溝通 pattern,在得知這是一個 memory bounded 且 L1/L2 Cache miss rate 較高的程式後進行一波瘋狂優化,包含手動為目標 GPU A100 指定適合的 Threads Block Size、改善 dimension 及 rank 的排列組合以符合 Communication Pattern,大幅降低 Communication Overhead,使在 3 nodes scalability 變得很好,性能提升 19%

最後不得不提到,如果改使用 NVIDIA 提供的 Library cuSparse 上述的性能問題大部分都會被 cuSparse 優化好,所以說有 NVIDIA 內部的 CUDA 大師做好的 Library 用還是用原廠的省時省力。這次會需要這麼多手動優化是因為在比賽前大會禁止我們使用 POT3D cuSparse 版本的 code。

出國前準備

由於幾乎是美國比賽的原班人馬,再加上這次我也沒斷腳,出國準備變得十分有經驗且輕鬆,逐條檢查要帶出國的物資,節儉持家的用 SC22 就用過的郵局紙箱和 Uber Eats 袋子(後來在歐洲破掉了,Uber Eats 這品質扛不住兩次出國,反觀郵局紙箱至今還在使用),再次將哩哩扣扣準備帶到歐洲。

比賽雜物整理好,之後要分裝到大家的行李箱
經過這麼多場比賽,郵局箱子永遠值得信任
伺服器都用 CR2032 電池,20表示直徑,32表示厚度
參賽經驗豐富的人,在比賽前心態都很穩

行前旅行規劃

為了在賽後也能玩得盡興,我自認精心地規劃了一場歐洲自由行。現在回想起來,第一次去歐洲自助、在沒什麼經驗的情況下,憑著一股熱血,行李收一收、火車票看好(甚至沒有訂)就出發了,真的覺得我們當時挺大膽的!以下是我們做的所有規劃,礙於我們都是窮學生,全程盡可能節省開銷:

機票

航空公司 航班號碼 航段 (起點 → 終點) 執飛機型
中華航空 (China Airlines) CI921 台北 (TPE) → 香港 (HKG) Airbus A330-300
德國漢莎航空 (Lufthansa) LH797 香港 (HKG) → 法蘭克福 (FRA) Airbus A340-300
德國漢莎航空 (Lufthansa) LH6 法蘭克福 (FRA) → 漢堡 (HAM) Airbus A319neo
德國漢莎航空 (Lufthansa) LH772 慕尼黑 (MUC) → 曼谷 (BKK) Airbus A380-800
長榮航空 (EVA Air) BR68 曼谷 (BKK) → 台北 (TPE) Boeing 777-300ER

行程

歐陸交通整理

地點 時間 車票
Hamburg -> Berlin 5/27 上午的票
Berlin -> Praha 5/27 下午的票
Praha -> CK 5/30 CK Shuttle
CK -> Salzburg 5/30 CK Shuttle
Salzburg → 國王湖 → Munich 5/31 公車,行李放在 Berchtesgaden Hbf
新天鵝堡 1 day tour 6/1

個人支出 22600

  • 旅館 15800
  • 交通 6800
  • (機票 42600)

沒錯就這樣!去歐洲旅行應該很少有人能像我們一樣製作如此之少的規劃就出發了吧?火車都到當場才訂,連旅館都只比較了兩三間就訂下去了。總之,我們就要前往比賽了!

ISC23 歐洲行 - 漢堡

前言

從 Lubeck 回來後睡了一個晚上,2023/05/26 原訂整天是留給漢堡的行程,原訂早上一起來大家各自到漢堡城市內晃晃,約定好下午 3:00 去搭船遊覽易北河
但人算不如天算,因為大賽獲獎後,學校秘書處會幫忙發新聞稿,而這是有時效性的事情必須盡速處理。歐洲時間早上剛好是台灣時間下午,所以一起床我就開始跟秘書處書信往來,提供比賽題目、成員名單等相關資訊,並協助校稿新聞稿內容是否有誤,一來一往一個早上就過去了,最後在飯店吃了維力炸醬麵當午餐(又省了 10 EUR),終於把行政事項處理完了。

易北河遊船

下午 1:00 我和 Yi Kuo 從飯店出發,離下午 3:00 onboard 本來應該匆匆忙忙游刃有餘,誰知道他的上船位置標示的非常不明確,再加上漢堡有很多家公司在經營觀光遊船,在碼頭來來回回跑了好幾次都沒找到正確的碼頭,後來問了好心人才發現我們要搭的船在遙遠的另一邊。最後匆匆忙忙連滾帶爬的抵達登船港。不過,在歐洲最神奇的就是,雖然我們已經遲到了,沒想到他們船也還沒準備好,上船後又過了 20 多分鐘才啟航⋯⋯很有歐洲人的風格。

大家跑得超級累,終於上船後又等非常久,不知道該慶幸還該生氣。

趁著上船等待的這段時間,可以點一杯啤酒或可樂,順便讓我來介紹一下漢堡遊船!漢堡遊船也分為很多種,在他們的官方網站上可以看到不同類型的郵船分類,大家可以在這裡比較完之後,再到你熟悉的第三方平台購票。如果時間足夠,2hr 的船可以體驗通過「船閘」,也就是船隻的電梯,才能航行到不同水位高度。

  • 倉庫城:就是舊城區,微縮世界所在的位置,當你穿梭於紅磚建築間,彷彿回到中世紀末繁榮的漢堡。
  • 運河:部分船隻會沿著易北河往出海口航行,一路往西,你會看到河景第一排的富豪建築,也會在左側看到 AirBus 空中巴士的漢堡工廠,這邊主要生產 A330 和 A350XWB 的機身,說不定你搭過來歐洲的飛機,有一部分就是在這裡製造的。
  • 船閘:船隻的電梯,透過船閘調節水位,船隻才能航行到不同水位高度。
  • 貨櫃碼頭:現代的漢堡港仍然德國的最大港口,因此這裡可以參訪十分現代的貨運基礎建設。

以下表格翻譯自 HAMBURG CITY-TICKETS 網站:

船程名稱 時長 景點精華 適合對象 推薦指數
2小時 XXL 超長行程 2 小時 最全面:倉庫城、運河、船閘、貨櫃碼頭、易北河沙灘、易北愛樂廳等。 想深度探索的旅客、不帶嬰兒車的家庭。 ⭐⭐⭐⭐⭐
大港口巡禮(小艇 Barkasse) 1 小時 經典款:倉庫城、港口新城、部分貨櫃港、易北愛樂廳。 喜歡近距離接觸水面、不帶嬰兒車的團體。 ⭐⭐⭐⭐
大港口巡禮(大型客船) 1 小時 舒適款:貨櫃碼頭、易北河沙灘、港口新城、易北愛樂廳。 攜帶嬰兒車的家庭、追求平穩舒適的長者。 ⭐⭐⭐⭐
夜景燈光秀巡禮 1 小時 浪漫款:點燈後的倉庫城、港口新城、夜間港口景緻。 情侶、想要享受夜晚氛圍的遊客。 ⭐⭐⭐⭐

準備啟航!我們搭到的行程是先往西,朝易北河下游行駛後折返往東,前往貨櫃區,通過船閘後折返。(沒有行經舊城區稍微有點失望)。

漢堡不愧是現代港口,一出發就先看到貨櫃船(這時我突然想到這趟旅程他們沒有驗船票)
導覽說這是漢堡有錢人住得河景第一排房子
漢堡作為 Airbus 的重要生產基地,可以在這邊看到他們位於河邊的工廠(參觀需提前預約),還有運輸機 Airbus Skylink 3 ——這是 Aero Spacelines 由波音 B377 改裝而來的運輸機,當年還有一句揶揄是 "Every Airbus is delivered on the wings of a Boeing."
沒想到運氣很好,剛好遇到 Airbus Beluga 在執勤,準備降落在上圖的工廠。這是 AirBus 自己設計的運輸機,也是現在主力的零件運輸機,往返於 AirBus 的各個分工廠與總組裝廠法國圖盧茲
帶著白饅頭海豹搭船,還好夠胖沒被吹走,背景是漢堡的工業設施,用來吊貨櫃的
航行的過程中,船會搭電梯,來銜接上不同高度的水道,對我來說是一個新奇體驗
在這些非觀光為主的城市,外地人和觀光客不多,真的很適合拍縮時記錄下時光流淌。

交通船打卡易北愛樂廳

下了船之後,距離晚上的微縮博物館入場還有一點時間,因此我們就港口附近亂逛。由於漢堡是一座水上城市,因此主要的移動方式是靠船!其中這艘黃色的 72 號交通船很特別,他剛好沿著河的兩岸,像拼乓球一樣在三點間來回折返,因此會多次穿越易北河愛樂廳,在下午 17:00 左右,陽光會灑落在易北愛樂廳的玻璃帷幕上,與河面的波光粼粼交互輝映,像是一顆閃耀的水晶,加深了我對漢堡這個城市的印象。
交通船就是漢堡的公車,碼頭有賣票很便宜約 2 歐元,請務必認準上面小小的 72 LED 燈號才不會搭錯
很適合搭乘 72 與易北愛樂廳合影。如果不是為了看 AirBus 的工廠搭乘這艘就能飽覽漢堡風光!

微縮博物館

傍晚時分,我們前往微縮博物館參觀,其實他全名是微縮景觀世界,但日常好像沒有聽到有人這麼稱呼他過,因此還是叫他微縮博物館吧!他擁有世界最大的鐵道模型,穿梭於歐洲、美國的各個角落。足以滿足所有鐵道迷、模型迷的夢想,只要你曾經組過模型,或是總能看著玩具火車在自己鋪設的軌道上行駛許久,都十分推薦你來這裡參觀。如果你已經走訪了許多歐美城市,也十分推薦你在這裡一窺你曾經到訪的景點,別看它僅僅是小小的模型,一定能喚醒你無數的回憶。
要注意,請務必留半天以上的時間,不然可能連一層樓都逛不完。
微縮景觀世界微博物館藏身在漢堡舊城區,紅磚牆的建築內,要仔細看才不會錯過他的大門。(上圖從博物館內往外拍)
這幢三層樓的紅磚房子內濃縮了世界各地的知名景點,甚至包含了我們才剛搭過的 72 路交通船!你看我說能喚醒回憶立刻就應驗了吧!
這裡有世界最長的火車模型,所有火車都是真實會行駛的,並且還可能發生交通事故 XD 屆時可以觀察他們是如何在模型上行駛,如軌道、磁鐵等
當然也有飛機,他們是會滑行、起飛、降落的!偶爾還會有不速之客如千年鷹飛過。
每一個角落都彷彿藏著一些小人物故事,值得駐足許久默默觀賞。不經思考當初設計展場的人們是否把自己的親身經歷藏在其中呢?
也有一些令你會心一笑的場景
颱風天就是要泛舟
傳統德式風格的小房子,也可以在法國 Colmar 及鄰近地區看到
微縮博物館甚至有所有鐵道與交通系統的中控台,遇到事故脫軌/卡著等會派人出去處理。
這博物館實在有太多地方可以細細品味了,一出來就晚上九點了,光有點暗來不及拍照了(對,這就是高緯度地區的晚上九點),我決定明天再來拍下這些紅磚建築的風采。
微縮景觀世界博物館票根,相信會成為我最難忘的一個博物館
買滿零食和飲料準備回飯店休息

次日 City Walk

2023/05/27 好像又因為在處理事情,下午才出飯店,有些人或許會覺得很可惜,但對我來說,旅行不是一個獨立出來的休息時間,而是我生活的一部分。在歐洲工作,也是一種特殊的生活體驗。

去市政廳走走晃晃,還記得市政廳的德文嗎?Rathaus!在市政廳的正門口,刻著漢薩自由市的名言 Libertatem quam peperere maiores digne studeat servare posteritas. 自由乃汝先祖奮鬥所得,願後人致力於珍惜之。讀過漢薩歷史的你應該心有戚戚焉

接著我前往聖尼古拉教堂,這是漢堡最高的教堂塔樓,他在二戰時被炸毀,旁邊的地下室有常設展空襲下的漢堡毀滅,如果你買了登高電梯的票可以順道參訪
聖尼古拉教堂,登高俯瞰漢堡市容,搭配一些二戰前拍攝的照片,供你對照
來吃漢堡當地特色美食,魚漢堡。但有個小缺點是麵包很硬要小心,我把我牙齒咬斷了到現在還沒去補⋯⋯

海事博物館

在這個海上貿易重鎮,當然一定要前往海事博物館參觀。在參觀世界各地的海事博物館後,我有信心說這棟真的是最齊全的,而且我記得他提供小板凳,可以拿著走坐下參觀
門口有個巨大的渦輪,絕對不會錯過
台灣在世界海運佔有一席之地,這邊很容易可以找到陽明海運及長榮海運的模型
還有非常多蒸汽船的頗面圖,這些機械結構我一艘船可以看個 10 分鐘
工業或許就是我們這些工程學生的浪漫吧?雖然我也不懂,但仍然十分著迷

當然除了工業以外,也有許多海事相關的手稿、藝術。其中這幅畫特別吸引我,畫面中那一抹落日的橘,跟我在台灣鹿林拍得落日十分相似,沒想到在歐洲的海洋及台灣的高山上,居然有著相同的光彩?
後來我瞭解到這幅畫是由俄羅斯著名的海洋畫家艾瓦佐夫斯基繪製的,背景右側停泊著一艘已卸下帆具的戰艦,前方則有一艘護衛艦正由一艘蒸汽拖船拖曳前行。這種用光技巧,這種海洋敘事,換作是今天的我,肯定會立刻聯想到威廉·透納(J.M.W. Turner)的畫作,那是我最喜歡的畫家。
沒想到一查以後發現,艾瓦佐夫斯基非常崇拜透納,怪不得他對光影的極致處理深深打動了我。旅行及藝術就是如此特別,在多次旅行、多次看展、多年後,或許會猛然發現自己喜歡的事物間總有著某種關聯⋯⋯
伊凡·康斯坦丁諾維奇·艾瓦佐夫斯基 (Iwan Konstantinowitsch Ajwasowskij) 所作,作品名稱為 《日落時的港口》(Hafen bei Sonnenuntergang
當然還有不少特殊的船隻模型,不過在看完微縮博物館後顯得有點小巫見大巫了
也賣了不少模型,但對海運不太了解的我只能買了看得懂的 stack(資工術語) 和 uboot(資工軟體)
晚餐再次挑戰魚漢堡,人不會犯兩次同樣的錯誤,這次直接買沒有麵包的吃,不會掉牙齒了
雖然已經 19:30 了,但漢堡的夏日陽光仍允許我擅自延長悠閒的午後,水道間偶爾會有上面的遊船經過,充當一回本地人跟他們揮揮手。
時間差不多了,約莫 20:30 我抵達昨天的紅磚房,記錄夕陽下美麗的漢堡舊城區市容
經典機位打卡拍照,令我想到 HPC-AI 夏令營住新竹火車站某間旅館,他的牆面就是在這裡拍的!有人知道是哪間嗎?~

在漢堡的旅行到此結束,雖然漢堡不如威尼斯等城市知名於世界,但如果有來參加研討會,很適合在這邊停留一陣子,一覽歐洲港口城市的歷史,配一口魚漢堡,享受河邊午後的愜意陽光。

自由行注意事項

  • 漢堡因為觀光客少,這裡給人的安全感十足,沒有一直盯著你的扒手⋯⋯
  • 漢堡的遊船選擇很多,但如果時間允許選最久的,悠悠在船上喝個飲料吹吹海風是很舒服的體驗
  • 如果時間不夠但是想要出片,選擇在下午搭乘 72 交通船,就能與地標易北愛樂廳留下最美的合照
  • 有機會的話一定要事先預約 AirBus 的工廠參觀,這是比微縮博物館還難預約到的,根據我在圖盧茲的參觀體驗,應該是能大開眼界!
  • 如果你是會看模型看很久的人,微縮博物館一定、一定要留半天的時間參觀,可以稍微查一下哪些場景有不速之客會隨機出現
  • 海事博物館的模型意外的很便宜,可以帶一艘回去紀念,比起一般的歐洲紀念品都還特別
  • 魚漢堡建議直接買沒有麵包的,生魚片配酪梨就好
  • 如果想拍經典機位(最後一張照片),不能在落日時過去會太暗,建議下午就前往。
  • 漢堡花費其實不高,但玩得緊湊的人可以買 Hamburg Pass 會更划算

花費

  • 易北河遊船 18~30 EUR
  • 海事博物館 15 EUR
  • 聖尼古拉教堂 5 EUR
  • 漢堡魚漢堡 5 EUR (歐洲這價格每天都可以來一個)

ISC23 歐洲行 - 呂北克

為什麼想去

在得獎之後可以快樂的出去玩了!比賽後我們留了兩天(5/25 和 5/26)在漢堡附近玩,好好認識一下這個給我們榮耀和滿滿回憶的地方。漢堡不是十分熱門的歐州旅遊景點,所以大部分的地方不需要預約,只有微縮景觀世界比較熱門,我只約到 5/26 傍晚。
而空出來的第一天,我們就打算到附近的城市走走,主要的可選項有呂北克、不萊梅,但考慮到呂北克比較近,且 黃恩明這篇 blog 推坑,我們就選定了比較近的 Lübeck 呂北克,去之前也只聽聞他的巧克力很有名,其他一無所知,不過一群大學生就這樣買了德國鐵路團體票就出發了。
漢堡 DB 團體票超級便宜,只要 39 歐可以用一天,只要三個人就十分划算了,要注意的是上面的人要一起行動
幾個人浩浩蕩蕩的前進 Lübeck 城,有種史詩大片的感覺

呂北克既然位於德國北邊,那當然是由斯拉夫族群建立的城鎮,並在 12 世紀時與漢堡結為漢莎同盟(沒錯,就是漢莎航空的那個「漢莎」),並作為其主導城市。漢莎同盟壟斷波羅的海的海上貿易利益,並維護成員城市之間的安全與經濟秩序。這個由北歐港口與商業城邦組成的聯盟,在 13 至 15 世紀達到鼎盛時期,掌握了歐洲北方幾乎所有重要的航運與鹽、魚、木材、毛皮等貿易路線;然而隨著地理大發現與新航路的開啟,貿易重心逐漸轉往大西洋沿岸,最終在 17 世紀走向瓦解。
漢莎同盟地圖 ref: [wiki](https://zh.wikipedia.org/zh-tw/%E6%B1%89%E8%90%A8%E5%90%8C%E7%9B%9F#/media/File:Kaart_Hanzesteden_en_handelsroutes.jpg)

熟悉歷史的你肯定知道,13 至 15 世紀正值文藝復興興起的年代——這是一個海上貿易與思想自由都達到巔峰的時代。南方的威尼斯,同樣因為航運與商業而崛起,成為地中海世界的金融與文化中心。雖然呂北克與威尼斯分屬完全不同的經濟體系,一個主導波羅的海貿易,一個稱霸地中海,但它們都在同一個時代背景下崛起,象徵著中世紀晚期歐洲從封建體制走向城市自治與商業繁榮的歷史轉折——兩座城市以截然不同的文化基因,卻創造出相似的輝煌。
塔尖裡面是一個博物館,大致介紹了 Lübeck 的歷史地理,我們從左邊的城門進入,可以隨運河繞一圈。
博物館內有大量的帆船模型、當時貿易的工具、關押犯人的牢房等
這是運河船票,沿著護城河繞一圈。PS:這也是我在歐洲唯一一筆大額的歐元現金花費
博物館裡面看到的船的實體版本
更多的船
小鎮沒有什麼壯麗的景觀,但也因此船長航過不少小支流,行經幾戶人家,看德國人悠悠閒閒地度過涼爽的夏季午後。
第一次到歐洲還是要爬個塔
下午從塔頂往霍爾斯滕門城拍是逆光,但從這個視角拍出去的延伸感漂亮的
不知道是誰想得,塔內搞得很 Cyber,穿著 HITCON 衣服毫無違和。
呂北克因為貿易杏仁,以杏仁巧克力著名,不妨在當地品嚐一番。Café Niederegger - Stammhaus
但作為伴手禮的巧克力,其價格幾乎全德國似乎都相同,不一定要在這邊買。
最後從呂北克火車總站回漢堡,繼續接下來的旅程。

自由行注意事項

  • 火車票十分建議買團體票,上車後務必確認知道彼此坐在哪,遇到查票時可以快速集合
  • 如果要登塔拍城門,建議上午拍才會順光
  • 巧克力不著急不用在那邊買,跟德國超市價格是相同的

花費:

  • 火車票 39 EUR
  • 繞城船票 14 EUR
  • 咖啡廳 8~12 EUR

完整學習機器學習實錄2——安裝 Nvidia 機器學習環境

完整學習機器學習實錄2——安裝 Nvidia 機器學習環境

tags : 完整學習機器學習實錄

前言 —— 本文值得一讀之處

本篇將繼續介紹,如何以一個有效的思路,成功的安裝 Nvidia 機器學習環境。

不同於其他文章,本篇以概觀介紹為主、細節為輔,希望以清晰的思路,培養大家思考的能力;跳脫 step by step 的框架,使未來的學習中能夠以飛快的速度向前,即便遇到版本更新、也得以與時俱進。不再拘泥於完善的教程,也得以不斷自我成長。

前情提要

在上一篇完整學習機器學習實錄 1 —— 安裝 Ubuntu 18.04 ,我們安裝 Ubuntu 18.04 系統於 X299 及 1080ti 上,同時記錄了幾個有關於 ACPI 及 NVME 的基本知識和問題迴避。

這次,將來安裝學習機器學習時,最常遇見的環境坑,在 N 卡的環境上,需要安裝的包含顯示卡的驅動程式,Nvidia 提供的 CUDA 與 cuDNN,以及機器學習的套件包,舉凡 Tensorflow、caffe 等。在這裡以 Tensorflow 為例。

在安裝前

如果讀者有閱讀過其他文章,想必非常清楚這三者 Tensorflow, CUDA, cuDNN 的安裝順序通常是先安裝 CUDA 然後補上 cuDNNlib,最後再以 Python 套件的形式,安裝 Tensorflow ,而實際執行上,這樣的順序的確是良好的。

但是,於思考的邏輯上,依照這個順序去選擇安裝版本、去查資料,卻容易造成嚴重的版本錯誤,理由是,Tensorflow 依賴 CUDA 去調用 GPU,而 CUDA 又需要 cuDNN 作為 library 來實現深度神經網路。所以,要成功的安裝學習環境,也是就是要能順利運行 Tensorflow

必須依照 Tensorflow 的需求,去安裝相對應的 CUDA ,再依照 CUDA 的需求,去選擇對應的 cuDNN 作為函數庫。

在這邊,容我對 Tensorflow CUDA cuDNN 稍作展開,避免讀者在接下來的學習中遇到相關問題沒了個底。

Tensorflow

想必會來閱讀這篇文章的大家,對於 Tensorflow 肯定是耳熟能詳了,但是 Tensorflow 的本質究竟是什麼?在接下來的段落裡,我們希望讓大家對於 Tensorflow 能夠有更近一步的認識,而不再是 :

Tensoflow? 做機器學習的啊?
在这里插入图片描述

打開 Tensorflow 官網,我們便能清晰地看到官方對於 Tensorflow 的定位,An open source machine learning framework for everyone. 就我的理解為,「一個面向所有人的、開源的、機器學習框架。」

其實不止 Tensorflow ,多數的軟體都有這麼一句話,位於官網的顯眼處,只要你願意去打開官網,就能夠快速地理解其究竟是什麼定位,能夠拿來解決什麼問題?

在这里插入图片描述
是的,Tensorflow 是一個機器學習的「框架」framework,框架是一個大家公認的規範,也就是在茫茫程式大海中,你可以有自己的習慣、有自己的開發方式、有自己的 API 接法等等。但是,若你與大家使用了共同的規範、共同的習慣,那所有人開發起來就會方便許多,你們可以共用某支程式,共用某些 API ,彼此間也能夠迅速成長。

而 Tensorflow 究竟定義了什麼樣的規範,使之成為機器學習的框架呢?其實官網往下轉,就給出了我們想知道的答案。

在这里插入图片描述這段告訴你,Tensorflow 既是一個機器學習的框架,更是一個實現機器學習算法的接口。

  • 就高層次而言,Tensorflow 主要提供您:
    • 以計算圖的思考方式,去規劃與設計機器學習。
    • 以 session 作為一個窗口,讓使用者快速的設計計算圖。
  • 就低層次的意義而言, Tensorflow 實現了以下幾點:
    • 消弭了不同 CPU、GPU 及更多類型間的硬體差異。
    • 實現了多 worker(不同電腦)、多 device(多張 GPU)的優化,包括記憶體、運算核心、資料傳遞等。
    • 實現了自動的反向傳播算法,由 Tensorflow 去智能計算反向傳播。
    • 性能優化:包括了一些計算庫及不同的並行運算方式。

      這邊大略的提到它的功用,至於再往下展開,就是如合實現這些目標的概念解釋,有興趣得讀者,可以參考 「Tensorflow 實戰」,這本書,裡頭開篇便有詳細的說明。

CUDA

cuDNN

https://www.tensorflow.org/
https://developer.nvidia.com/cudnn

完整學習機器學習實錄1——安裝 Ubuntu 18.04

完整學習機器學習實錄1——安裝 Ubuntu 18.04

前言

  本系列將紀錄作者在學習機器學習的同時,曾經踩過的坑與詳細的操作記錄。

一方面希望之後能夠在不久的未來回顧過去所為、遇到相同的問題時能夠讓迅速找到答案;同時也希望幫助在類似環境下學習的朋友,能夠有一套較詳細的學習筆記,共同勉勵與成長!

硬體配置

1
2
3
4
5
MB : X299 AORUS Gaming 9
CPU: Intel I9-7920X
RAM: DDR4 HyperX 128G
SSD: Kingston A1000 NVMe PCIe SSD 960G
GPU: Nvidia GTX 1080ti (ROG-STRIX-GTX1080TI-O11G-GAMING)

這邊需要注意的

  • MB 與 CPU 經由老外實測^1,是可以運行 Ubuntu 的,所以如果出問題,不需要先去考慮是主板與 CPU 不支持。
  • SSD 是 NVME 協議,LINUX 理論上是支持的^2,組配時需確定主板支持才行。
  • GPU 是 Nvidia ,自古以來 Nvidia 這類外接顯卡在 LINUX 上都需要另外安裝驅動,比較麻煩些,但也不得不用是吧。

系統安裝

筆者打算安裝此時最新的 Ubuntu 18.04 ,並且實現 Windows 10 與 Ubuntu 雙系統。雖然可能會遇到不少坑,但畢竟他是 LTS 版本,選用還是有點保障的。

基本知識

安裝系統涉及主板等許多基礎知識,這邊以條列式記錄,並且附上連結,有興趣大家可以自行研讀,但至少要了解它的功用與存在意義。

  • UEFI:Unified Extensible Firmware Interface 統一可延伸韌體介面,用來定義作業系統韌體的中介 ^3,過去舊稱為 EFI,是用來取代 BIOS 的一種新定義。^4
  • 韌體(固件):firmware 顧名思義,韌體的所在是位於軟體和硬體之間的。像軟體一樣,他是一個被電腦所執行的程式。現已演進為一個硬體裝置當中的可程式化的內容,通常可用 電流清除並重寫更換儲存媒介 的方式更新。

    俗稱刷 BIOS 就是在刷韌體

  • Legacy/CSM:在 UEFI 普及後,我們時常可以在主機板選項中看到這兩者之一,開啟、關閉分別代表是否兼容傳統 BIOS 。這是在標準整合的時代,必然會出現的混亂選項,之後有望完全脫離 CSM^5
    • 微軟的 UEFI 推廣計畫:
      在这里插入图片描述
      • 類別0,這類系統使用x86 BIOS韌體,只支援傳統作業系統。
      • 類別1,這類系統採用支援UEFI和Pi規範的韌體,啟用CSM層功能,只支援傳統作業系統。
      • 類別2,這類系統採用支援UEFI和Pi規範的韌體,啟用CSM層功能,同時支援傳統和UEFI啟動的作業系統。
      • 類別3,這類系統採用支援UEFI和Pi規範的韌體,不再提供或完全關閉CSM層功能,只支援由UEFI啟動的作業系統。
      • 類別3+,在類別3的系統基礎上提供並啟用Secure Boot功能。

若您的系統都以 UEFI 安裝,理論上開啟與否都不影響,但是為了更好的兼容,通常建議開啟 CSM 後選擇 UEFI 優先。(金士頓的官方說明^6 與 SSD 疑惑^7

  • Secure Boot:中文稱安全啟動,也就是主機板只認定「安全的系統」,才能夠順利啟動,目前被認定為安全的系統有以下等,不少 Linux 發行版也通過「安全」認證。
    • Windows 8 and 8.1
    • Windows Server 2012, and 2012 R2
    • Windows 10, VMware vSphere 6.5[52]
    • Fedora (since version 18)
    • openSUSE (since version 12.3)
    • RHEL (since RHEL 7)
    • CentOS (since CentOS 7[53])
    • Ubuntu (since version 12.04.2)
    • FreeBSD

而更詳記得內容如下文所述^8

The UEFI 2.3.1 Errata C specification (or higher) defines a protocol known as secure boot, which can secure the boot process by preventing the loading of drivers or OS loaders that are not signed with an acceptable digital signature. The mechanical details of how precisely these drivers are to be signed are not specified.[49] When secure boot is enabled, it is initially placed in “setup” mode, which allows a public key known as the “platform key” (PK) to be written to the firmware. Once the key is written, secure boot enters “User” mode, where only drivers and loaders signed with the platform key can be loaded by the firmware. Additional “key exchange keys” (KEK) can be added to a database stored in memory to allow other certificates to be used, but they must still have a connection to the private portion of the platform key.[50] Secure boot can also be placed in “Custom” mode, where additional public keys can be added to the system that do not match the private key.[51]
Secure boot is supported by Windows 8 and 8.1, Windows Server 2012, and 2012 R2, and Windows 10, VMware vSphere 6.5[52] and a number of Linux distributions including Fedora (since version 18), openSUSE (since version 12.3), RHEL (since RHEL 7), CentOS (since CentOS 7[53]) and Ubuntu (since version 12.04.2).[54] As of January 2017, FreeBSD support is in a planning stage.[55]
在这里插入图片描述

  • MBR 與 GPT:兩者分別為傳統 BIOS 與新型 UEFI 的分區結構,狹義的MBR 可以單止 BIOS 的系統引導程序,與之相對應的是 UEFI 的系統引導程序分區 ESP(EFI system partition)。

    • GPT 好處為近乎無限的分區數量以及識別無限硬碟大小。
    • MBR 僅限制 2T 與 4 個主要分區,但存在較好的相容性。
    • 單以一張圖可以這麼解釋兩者差別,MBR 主要受限於其分區、引導等內容都儲存在第一個分區,而這個分區的大小會影響其發展可能性:

      這部分較為複雜,牽扯到系統啟動時所需要查找的硬碟分區、以及其紀錄方式等,詳細內容可以查看這篇文章^9或是較口語化的這篇^10

  • 在 windows 以 UEFI 啟動電腦的流程:
    在这里插入图片描述
    Bootloader(引導)代碼及配置文件存於系統盤的ESP中。其中如圖深灰色層,Win10自帶的 Bootloader 為 Windows Boot Manager ,而同屬相同層次 ubuntu18.04 自帶的 Bootloader 為 GRUB2 。

目前實現 win10 / ubuntu18.04 雙系統有兩種方案:

  1. 在深灰色層,仍染以 Windows Boot Mananger 為主引導,但需要關閉 UEFI 和 Secure Boot,開啟Legacy / CSM,最後通過 EasyBCD 手動添加 Ubuntu 入口。
  2. 在淺灰色層,就交給以 GRUB2 作為主引導,使其生成開機選單。

顯而易見的,第二種方案更省時省力。

前面有提到,Ubuntu 已經通過 Secure Boot 的認證,所以如果以 GRUB2 為主導,其實不需要關閉 Secure Boot 依照邏輯也得以正常啟動。

製作與開始安裝 Ubuntu

  1. 使用 Ultraiso 選用「寫入硬碟映象」製作一支 ubuntu 18.04 的開機碟
  2. 使用 Win10 自帶的硬碟管理(開始鍵 + X ➡️ 選磁碟管理),在 C 磁碟(系統盤),右鍵「壓縮卷」,依個人狀況選擇留給 Ubuntu 的大小。
  3. 到 BIOS 將 Legacy / CSM 兼容打開,Secure Boot 可以保持原設定,將帶有 UEFI 前綴字樣的隨身碟設為首選開機。F10 存擋並重新啟動。
  4. 此時會進入 Ubuntu GRUB2 的引導開機介面,選擇 install Ubuntu 後正常情況會順利安裝。
  5. 這兒筆者遇到兩個狀況,第一是點選 install 後卻因為 ACPI error 而導致黑屏死機,必須強壓電源關機。在此紀錄筆者排除此狀況的流程。
    在这里插入图片描述

釐清問題 — ACPI 是啥?

  • 進階組態與電源介面(英文:Advanced Configuration and Power Interface,縮寫:ACPI),是1997年由英特爾、微軟、東芝公司共同提出、制定提供作業系統應用程式管理所有電源管理埠,是一種工業標準,包括了軟體和硬體方面的規範^11
    • 換句話說,這又是一個 UEFI 社群的新規章,他定義了一些特殊的電源使用方式,例如下面這些功能^12:
      1. 用戶可以使外設在指定時間開關。
      2. 使用筆記本電腦的用戶可以指定電腦在低電壓的情況下進入 低功耗狀態,以保證重要的應用程式運行。
      3. 作業系統可以在應用程式對時間要求不高的情況下降低時鐘頻率。
      4. 作業系統可以根據外設和主板的具體需求為它分配能源。
      5. 在無人使用電腦時可以使電腦進入休眠狀態,但保證一些通 信設備打開。
      6. 即插即用設備在插入時能夠由ACPI來控制。
  • 問題的發生
    • Ubuntu 18.04 沒有原裝 Nvidia 顯卡的圖形驅動,導致無法正確透過 ACPI 調用電源管理而出錯。^13
  • 問題的解決
    • 我們可以透過更改 GRUB2 的啟動參數來「迴避」這個問題。^14

    • 再進入選擇 Try Ubuntu 或 install Ubuntu 的頁面,在選項上按下 e ,隨後可以進入 GRUB2 的參數修改介面,在 Linux 那行,後方刪除三個 --- 後加入 acpi=off

      • 錯誤示範:acpi=off 錯誤示範
      • 正確示範:在这里插入图片描述
      • 接著在開機時,要壓住 shift ,再次進入 GRUB2 並且做相同的設定。如圖片中倒數第二行,一樣加在 Linux 那行。

    在这里插入图片描述

    • 開機後可以使用以下指令安裝 Nvidia 驅動
      sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt-get update
nvidia-smi 後可獲得建議安裝指令
sudo apt-get install nvidia-381 (後面請選擇適當的或最新版本)
- 如果仍然出現問題可以編輯 /etc/default/grub ,加入 acpi=off
但是要注意可能發生 CPU 風散停止的問題。
在这里插入图片描述

  • 問題補充
  1. 接著,順利進入安裝程序後後,卻發現無法正確抓到 NVME SSD。

釐清問題 — NVME SSD

根據這篇文章把 Ubuntu 16.04 及 18.04 安裝到幾款特殊的 NVMe SSD^16 上,可以知道大概是 APST(Autonomous Power State Transitions) 的問題,可見作者在 Arch Linux Wiki 上可以找到解決方法

  • 問題的發生
    • 而問題的細節是因為 NVME 的省電模式似乎因為驅動的問題而掛了,近一步可以閱讀PMC NVMe主控动态电源管理^17理解更多有關於 NVME 電源管理代碼的問題。
  • 問題的解決
    • 在剛剛相同的頁面,相同行,空格後接續補上此參數nvme_core.default_ps_max_latency_us=5500 開機後 installer 就能偵測到 NVMe SSD 了。
      在这里插入图片描述
    • 因為 Ubuntu 預設是不會出現 GRUB 選單,會自動進入系統,所以安裝完第一次開機時要按住 shift 強制讓 GRUB 出現,再次加上 nvme_core.default_ps_max_latency_us=5500 參數開機,如果不加上還是能進系統,但會隨機遇到系統完全 hang 住無法動彈,只能強制重新開機的狀況,例如執行 lscpi uname 等指令都有可能引發。
    • 成功第一次穩定進入系統,要去編輯 /etc/default/grubnvme_core.default_ps_max_latency_us=5500 參數加上去,再執行 sudo update-grub 更新 GRUB 設定。
      在这里插入图片描述

結論

至此為止,已經成功了安裝必備的基本環境,可開始 Ubuntu 18.04 的機器學習之旅。接著,可以開始安裝相對應的 CUDA 以及 cuDNN,以及自己熟悉的機器學習框架與庫,Here we go!

AI 學習筆記整理

AI學習筆記

常見名詞觀念釐清

人工智能的範疇

  • 專家系統
  • 機器學習
  • 進化計算
  • 模糊邏輯
  • 計算機視覺
  • 自然語言處理
  • 推薦系統等

機器學習

William Mou’s Github
學習書籍:Python機器學習

Python基礎套件教學

SciPy Lecture Notes 中文版 numpy中文教程

  • 傳統算法
    • 決策樹
    • 聚類
    • 貝葉斯分類
    • 支持向量機
    • EM
    • Adaboost

距离及相似度度量方法

  • 學習方法的分類
    • 半監督學習
    • 集成學習
    • 深度學習
    • 監督學習(如分類問題)
      • 分類法
        1. 訓練數據集中學習
        2. 回歸分析導出模型
        3. 對新數據做出預測
      • 回歸預測
        1. 預測變數+反映變數
        2. 發覺變數間的關係
        3. 找出變數的適合曲線
    • 強化學習
      1. 與環境互動改善自身技能
      2. 透過測量函數回傳度量質
      3. 透過方式最大化獎勵:
        • 嘗試錯誤
        • 審議式規劃
    • 非監督學習(如聚類問題)
      沒有已知的結果和獎勵函數,透過探索數據本身的結構得到資訊
      1. 探索式數據分析技術
      2. 允許組織技術至有意義的「子族群」
      3. 使特徵有一定程度的相似性,發現特殊分群

深度學習,一種實現機器學習的技術

TensorFlow 筆記
从系统和代码实现角度解析TensorFlow的内部实现原理
莫煩Python

  • 背景

    深度學習本來並不是一種獨立的學習方法,其本身也會用到有監督和無監督的學習方法來訓練深度神經網絡。但由於近幾年該領域發展迅猛,一些特有的學習手段相繼被提出(如殘差網絡),因此越來越多的人將其單獨看作一種學習的方法。

    最初的深度學習是利用深度神經網絡來解決特徵表達的一種學習過程。深度神經網絡本身並不是一個全新的概念,可大致理解為包含多個隱含層的神經網絡結構。為了提高深層神經網絡的訓練效果,人們對神經元的連接方法和激活函數等方面做出相應的調整。

  • 缺點

    1. 深度學習模型需要大量的訓練數據,才能展現出神奇的效果,但現實生活中往往會遇到小樣本問題,此時深度學習方法無法入手,傳統的機器學習方法就可以處理。

    2. 有些領域,採用傳統的簡單的機器學習方法,可以很好地解決了,沒必要非得用複雜的深度學習方法。

    3. 深度學習的思想,來源於人腦的啟發,但絕不是人腦的模擬,舉個例子,給一個三四歲的小孩看一輛自行車之後,再見到哪怕外觀完全不同的自行車,小孩也十有八九能做出那是一輛自行車的判斷,也就是說,人類的學習過程往往不需要大規模的訓練數據,而現在的深度學習方法顯然不是對人腦的模擬。

  • 理念

    Science is NOT a battle, it is a collaboration. We all build on each other’s ideas. Science is an act of love, not war. Love for the beauty in the world that surrounds us and love to share and build something together. That makes science a highly satisfying activity, emotionally speaking!

    這段話的大致意思是,科學不是戰爭而是合作,任何學科的發展從來都不是一條路走到黑,而是同行之間互相學習,互相借鑒,博採眾長,相得益彰,站在巨人的肩膀上不斷前行。機器學習的研究也是一樣,你死我活那是邪教,開放包容才是正道。

介紹ppt

SRGAN

AIJT梯度下降法手算範例講解

tags : AI Junior Talk 人工智慧青年論壇

[name=牟展祐] [time=2018,2,23]

[name=牟展祐] [time=2018,6,23]
多層感知機





參考資料來源與出處:

人工智能、机器学习和深度学习的区别? 作者:育心。
附資源與完整指導!帶你從零開始掌握 Python 機器學習
深度學習 Deep Learning:中文學習資源整理
Machine Learning: Python 機器學習:使用Python
Machine Learning: Python 機器學習:使用Python
資源速查表

書籍選購

Python機器學習
Deep Learning:用Python進行深度學習的基礎理論實作
今天不學機器學習,明天就被機器取代:從Python入手+演算法
零起點Python機器學習快速入門

清大實驗教育 2019 分享會

實驗教育

政治大學 鄭同僚教授

前言

五成民眾不滿意國中小教學品質

工程實做 學長

  • 國中自製各種神奇鉛筆盒

  • 高中風洞模擬等實驗

    • 找到想做的事情,
    • 要解決的問題,
    • 再去把知識補起來
  • 下二上

    • 認真讀書考試
    • ARRC
    • FSAE
  • 二下實驗教育

    • PBL 問題導向學習
  • 在家的實驗:探索我的實驗

  • 國高中的實驗:確認興趣獲得成就感

  • 大學的實驗:培養興趣成為技能

  • 有人想讀研究所ㄇ?

    • 看到一張理學院學識的畢業證書可能不會有人收我?(明指台大)
    • 但是我整天都在實驗室和實驗助理沒有 gap 的討論事情。

無題

沒有一句話能夠統整這兩年來的事情

1
2
家長不能理解為啥不看參加科學營,而要來參加探索營
不只要看體制,而是看體制前和體制後帶給你哪些改變?

實驗教育可以有兩種解讀

  • 一種是實驗新的教育方式
  • 一種是實驗自己的人生

我們有些人是定好目標,用體制外的方式走向夢想
我們也有些人是在實驗教育中摸索學習、成長。

Who Am I ?

我是誰

[自介]
牟展佑,松山高中
高一自學程式,高二實作專案
Chatbot
Unity 3D
Blockchain
以太坊智能合約
機器學習

其中運用
Python solidity c++ 等語言

過程中一起研究專案,在群組內鼓勵每個人提出自己的想法,共同開發,一起解決困難。

之後也將這些技能與個人興趣、金融、公民社會等領域結合,其後也獲得NASA黑客松、旺宏科學獎入圍等獎項的肯定。

更在中研院與 SITCON 共同主辦的學生計算機年會上,發表區塊鏈的演講,主要受眾是大學生,透過講述區塊鏈以及以太坊的基本知識,希望能將我所學分享給更多人,更期待大家可以著手實作,改善生活。

[影片]

關鍵!
嚮往:做一個有故事的人。
多元並列觀點
我講得都不是對的

學習

  • 如合學習–我的學法 Just do it & Google

    • 說來簡單做來難
    • 你打開手機 chrome. 看看搜尋了什麼
    • 想想一天有多少時間,被動接收資訊
      • 滑了一天FB卻想不起來剛剛看了什麼
    • 主動才是完整的學習,才有真正收穫
    • 定義好目標結果,然後把結果當起點
  • 如何確認–費曼學習法的四個步驟

    • 教自己、教人
  • 如何維持學習的熱忱–唐鳳

    • 學習的初衷通常是想要弄懂一個東西,學會了一部分後就會認為「就這樣啊」
      • 所以就像火箭一樣,一段一段發射需要獲得補充包。
    • 舉例而言,研究一輛三輪自駕車
      • 一開始是「好奇」,但是好奇過後
      • 我們可以嘗試去「創造」,例如三輪自駕車的表達與使用方式等
      • 透過這些創造我們會去學習新的領域,進而產生更多的好奇心
      • 如此產生一個循環!
  • 挫折時,分享歌曲:曾經的我們
    https://www.youtube.com/watch?v=crIP7PuC8Bc

白天是學習的時間,晚上是創造的時間

  • 善用資源
    • 學校資源
    • 學校環境
    • 導師專業
    • 人脈資源
  • 善用死線
  • 善用行事曆
  • 好軟體介紹
    • hackmd
    • trello
      • scrum
    • telegram
    • git
    • magnet
    • docker
    • zoomus
    • iterm2
    • zsh(omz)
    • tmux
  • 邏輯思維、突破

成長與青春

人生中除了學習,我們更常遇到的煩惱是青春

  • 與父母討論事情,時間很重要

    • 推己及人,累的時候不說難話
    • 剛下課,開車、剛下班,在玄關,母湯
    • 洗完澡、吃完飯後,可能是比較適合的時間
  • 爸媽有偏見→要把好的一面告訴父母

    • 不是他們有偏見,是我們讓他們有偏見
    • 父母不討厭社團,有頭有臉的都是社團的
    • 社團教你神麼?
    • 有偏見應該一開始就消除
  • 家人的陪伴如何實現?

    • 就算沒有時間,也可以在他累的時候傳訊息給她。
    • 就算時間不多,也盡量在僅限的時間內全心全意的陪他

青春很多煩惱,但要珍惜的走下去

  • 分享歌曲:明天你好
    • 怕跌倒,卻只能奔跑
      • 長大了才能夠不去選擇
      • 兒時不成熟才會選擇ex要不要去上學
    • 當我朝着反方向走去,樓梯的角落找勇氣
      • 回顧、反思過去,成長的選擇:
        • 選擇松山不選離家近的?
        • 二選一:當初選擇妥協還是自我?
        • 記得:有可能這輩子的巔峰就是此刻
        • 唸台大…為了從台大出去
      • 累的時候看看轉角,自己的起點決定你的終點:
        • 快樂的班聯人?交朋友?負責的班聯人?
        • 當初的選擇決定你很累時,怎麼做?

行銷

做出來的東西要給別人看

  • 分兩組,兩兩坐,旁邊熟的舉手

    • 遊戲內容:
      • 熟的舉手
        • 不熟的像剛剛我自我介紹一樣
          • 你是誰
          • 你的專長
          • 你的小不擅長
    • 遊戲目的:
      • 學會去認識人
    • 遊戲引導:
      • 認識人不是時間問題
      • 認識人是願不願意開口的問題
  • 認識人需要契機

    • 多去參加各類研討會活動
      • 會見到與認識很多人
      • 介紹研討會
    • 我好像在哪裡看過你
  • 有做過的事情,適當的告訴別人

    • 除了行銷自己
    • 更能找到同夥
      • 不吝嗇交流-你永遠都不是最強的那個
      • 走出第一步
  • 不要害怕做 blog、寫文章是浪費時間

    • 讓你整理思緒
    • 讓你紀錄生活
    • 讓你有「故事」的資本
      • 有情感才銳變成故事
      • 沒情感只是事蹟
  • 人脈管理
    https://hackmd.io/s/HksXDjdGV

團隊

  • 做事重要還是感情重要?
    • 都重要
    • 可能當下偏哪一邊,但心中一定是「都重要」
  • 保持專注,工作分配平均→互相cover
  • 但磨合!=配合 (互相做自己)!=(配合別人)
  • 讓大家做自己擅長的事情
    • 縱使很累,若能夠做自己喜歡的事情,發現團員的能力與缺點,團隊能夠很投入
  • 常常覺得很多事情一個人可以做到?

Tensorflow-GPU 環境配置

Tensorflow-GPU 環境配置

AuthorWilliam Mou
點我進入個人 Blog

前言

:::info
AI 發展日新月異,各軟硬體更是推陳出新,而其中 Tensorflow 與其依賴的 CUDA 更是當今潮流,但兩者版本卻多不互相兼容,常常有各種 Bug 。

故,今天實作一篇安裝成功的例子,盡可能完整的陳述相關知識,以及所需注意的地方;供大家參考與共同學習。若有任何不恰當或錯誤的地方,都煩請您聯絡作者修改,共同進步。
:::

需求

:::success
安裝前,須先明瞭自己對於開發(潔癖)需求,以個人為例,我希望能夠在 VScode 中用 shift + enter run conda env 裡的 tensorflow-gpu with Cuda9 and Cudnn7


以清單表示:

細項
硬體 GeForce GTX 1080Ti
系統 Windows10 專業版
框架 Tensorlfow-GPU 1.9
版本 CUDA 9 & cuDNN 7.5
環境 python3.5 conda(Anaconda) env
編輯器 Visual Stusio code
:::

正文

安裝 CUDA

:::info
定義:

CUDA 是由 NVIDIA 所推出的一種整合技術,在其製造的圖形處理單元(GPUs)之上,實現平行計算平臺與程式設計模型。透過這個技術,開發人員可了直接存取 CUDA GPUs 中的虛擬指令集和平行計算元件的記憶體,運用 NVIDIA GeForce 8 以後的 GPU 和較新的 Quadro GPU 進行並行計算。

[name=取自wiki]

作者案:

你可以將它看作是 NVIDIA 顯示卡專用的平台,讓開發者更輕鬆的以 CUDA C 或 OpenCL 撰寫代碼,並透過 CUDA 最終被驅動程式轉換成PTX代碼,交由顯示核心計算。

這種方法與 CPUs 不同的是, GPUs 有著側重以較慢速度執行大量併發執行緒的並行流架構,而非快速執行單一執行緒。擅長運算「小」而「多」的數據資料,尤其是圖像運算更是在行。

但這並不表示在相同的花費下,使用 GPU 訓練 AI 一定會比使用 CPU 來的有效益,端看數據的資料大小及其特性,有時候數台 Xeon 系列的 CPU 多核運算,會比 GPU 來的快或節省經費。
:::

:::success
綜合上述,要在 Windows 平台安裝 CUDA ,我們需要準備一些其所需要的軟體,包括以下:

:::

接著,要來安裝本節主角: CUDAcuDNN
:::danger
CUDA 的版本較多,而每個版本有自己所對應的 cuDNN (將在下節介紹),為此,我們必須選定好適當的版本號,並謹記在心,以對應恰當的 Tensorflow 與 cuDNN。

建議各位在安裝前,可以去搜尋看看他人 Tendsorflow 與 CUDA 配對成功的版本,而這裡提供 其他作者 已經測試成功的案例:

  • tensorflow 1.4 及以下的不支持高於 CUDA 9.0 。
  • tensorflow 1.0 及以上的不支持低於 CUDA 8.0 。
  • tensorflow-gpu 1.5 以上不支持使用 CUDA 8.0。

而本節,以 Tensorflow 1.9 與 CUDA 9.0 做為安裝範例。

:::

:::success
首先,前往 NVIDIA 開發者的官網,下載 CUDA 連結點我

點選相對應的版本後,下載 Base Installer。

雙擊執行檔案 cuda_9.0.176_win10_network.exe 開始安裝

在檢查系統系統相容性與合約後

會進入安裝選項,建議可以直接快速安裝。

作者案

若沒有要使用Visual Studio 2017 編譯 CUDA 的朋友,可以進入自訂安裝中修改設定,將 Visual Studio Integration 關閉,避免報錯。

:::warning
若仍然遇到 安裝失敗的情形

建議可至 這篇博客 依照步驟解決,本文便不多贅述。
:::

安裝 cuDNN

:::info
定義:

cuDNN 全名為:NVIDIACUDA®深度神經網絡庫 是用於 深度神經網絡 的GPU加速庫。 cuDNN為標準例程提供高度調整的實現,例如卷積,池化,規範化和激活層。而 cuDNN 同時也是 NVIDIA 深度學習SDK 的一部分。

全球深度學習研究人員和框架開發人員依靠 cuDNN 實現高性能 GPU 加速。它允許他們專注於訓練神經網絡和開發軟件應用程序,而不是花時間在低級 GPU 性能調適上。 cuDNN 加速了廣泛使用的深度學習框架,包括 Caffe2MATLABMicrosoft Cognitive ToolkitTensorFlowTheanoPyTorch

作者案

作為 CUDA 的一個深度學習加速庫, cuDNN 的版本必須配合 CUDA 才能正常運行。下面我們將演示如何正確的安裝 cuDNN 。
:::

:::success
首先,前往 NVIDIA DEVELOPER 官網,點擊下載 cuDNN。

註冊或登入


跳轉至下載頁面

勾選同意後,會跳出版本選擇

此處,我們可以選擇適合的 CUDA 版本、與作業系統進行下載

作者案

此處選擇 CUDA 9.0 ,以應對上方我們所安裝的版本。

下載後開啟

解壓縮檔案

之後會得到一個 CUDA 資料夾,分別含有 binincludelib 三個資料夾

將其內部的檔案,分別移至 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 路徑下的對應資料夾中

例如: bin 裡面,需包含 cudnn64_7.dll

再分別將三個資料夾的檔案拖移至對應的位置後,
我們要將下列路徑加入環境變數中,以利將來調用

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64

打開控制台→系統及安全性→進階系統設定→進階→環境變數(或是直接在控制台中搜尋 PATH)
尋找「系統變數」中「Path」的部份並用左鍵雙擊,新增下述變數:

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64

到此為止, cuDNN 的安裝就到一段落了
:::

安裝 Anaconda

:::info
Anaconda 是一種 Python 語言的免費增值開源發行版,用於進行大規模數據處理, 預測分析, 和科學計算, 致力於簡化包的管理和部署。Anaconda 使用 軟體包管理系統 Conda 進行包管理。

[name=取自wiki]

編者案

使用 Anaconda 的好處是他擁有豐富的套件包與良好的套件管理,在資源(硬碟)足夠的情況下,安裝它可以為我們省去很多套件相關的麻煩。

而其安裝過程較為簡單,唯一需要的注意的是,關於 Python 的 PATH 是否與電腦內存在的(例如:Visual Studio 自帶的 Python、 或是原生的 Python)產生衝突,若為第一次安裝則沒有這個問題。

而關於使用方式, wiki 寫得相當清楚,下方引用列出。

  • 使用時,可以點擊啟動相應的編程環境:
1
2
3
4
5
6
7
8
9
Python(shell) : 標準CPython
IPython(shell): 相當於在命令窗口的命令提示符後輸入ipython回車。pip install ipython安裝的ipython用法一樣。
Ipython QTConsole
IPython Notebook:直接點擊打開,或者在命令提示符中輸入ipython.exe notebook
Jupyter QTConsole
Jupyter Notebook:直接點擊打開,或在終端中輸入: jupyter notebook 以啟動伺服器;在瀏覽器中打開notebook頁面地址:http://localhost:8888 。Jupyter Notebook是一種 Web 應用,能讓用戶將說明文本、數學方程、代碼和可視化內容全部組合到一個易於共享的文檔中。
Spyder:直接點擊打開IDE。最大優點就是模仿MATLAB的「工作空間」
Anaconda Prompt : 命令行終端
支持其他IDE,如Pycharm
  • 安裝包管理:
1
2
3
4
5
6
列出已經安裝的包:在命令提示符中輸入pip list或者用conda list
安裝新包:在命令提示符中輸入「pip install 包名」,或者「conda install 包名」
更新包: conda update package_name
升級所有包: conda upgrade --all
卸載包:conda remove package_names
搜索包:conda search search_term
  • 管理環境:
1
2
3
4
5
6
7
8
安裝nb_conda,用於notebook自動關聯nb_conda的環境
創建環境:在Anaconda終端中 conda create -n env_name package_names[=ver]
使用環境:在Anaconda終端中 activate env_name
離開環境:在Anaconda終端中 deactivate
導出環境設置:conda env export > environmentName.yaml 或 pip freeze > environmentName.txt
導入環境設置:conda env update -f=/path/environmentName.yaml 或 pip install -r /path/environmentName.txt
列出環境清單:conda env list
刪除環境: conda env remove -n env_name

:::

:::success
首先,我們進入 Anaconda 官方網站,並點擊右上方的 Download Anaconda

選擇 Python3.6 64-bit版本

下載完成後雙擊安裝,以下為安裝過程截圖


可將兩者一併勾選,省去設定的麻煩

安裝完成後,我們可以打開 Anaconda prompt 創建環境

前面()表示我們當前的環境,我們需要創造一個專屬於 tensorflow 的環境,以免套件彼此間相互干擾,連跟新個版本都要綁手綁腳的。

依照 wiki 所說,我們可以使用
conda create -n env_name package_names[=ver]
來創建一個環境。

編者案

由於電腦已創建過 tensorflow 環境,所以截圖中的命名會多一個 -t 避免衝突

輸入

1
$ conda create -n tensorflow python=3.5

他會提示你你的環境將放在何處。

輸入 Y 進行環境創建,他會預先幫你安裝一些套件

環境創建完成,依照命令行提示,你的環境被套件被放在 C:\Users\willi\Anaconda3\pkgs\wheel-0.31.1-py35_0 ,可以輸入 conda activate 指令來進入環境,輸入 conda deactivate 來離開環境

接著我們進入環境

1
$ conda activate tensorflow

使用以下指令來安裝 tensorflow

1
2
3
$ pip install tensorflow
# 或者
$ conda install tensorflow

編者案

若有開發需求,可以如以下方式指定 tensoeflow 版本

1
2
3
4
># 移除舊有版本
>$ pip uninstall tensorflow-gpu==1.3.0
># 安裝指定版本
>$ pip install tensorflow-gpu==1.5.0

安裝完成

使用 import 來檢驗是否安裝正確

1
2
3
$ python
# 進入 python 互動介面後
>>> import tensorflow as tf

隨後逐行複製以下代碼,檢測是否正常運行 GPU

1
2
3
4
5
6
7
8
9
import tensorflow as tf
# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

運行成功應該如圖,輸出運行之顯示卡序號

1
GPU 0

與運算結果

1
2
[[22. 28.]
[49. 64.]]

:::

安裝 Visual Stduio Code

:::info
Visual Studio Code(簡稱VS Code)是一個由微軟開發的,同時支援Windows、Linux和macOS作業系統且開放原始碼的文字編輯器。它支援偵錯,並內建了Git 版本控制功能,同時也具有開發環境功能,例如代碼補全(類似於 IntelliSense)、代碼片段、代碼重構等。該編輯器支援用戶自訂配置,例如改變主題顏色、鍵盤捷徑、編輯器屬性和其他參數,還支援擴充功能程式並在編輯器中內建了擴充功能程式管理的功能。

[name=取自wiki]

作者案

作為一門編輯器, VS Code 具有跨平台、輕量、擴展性高等優點,使用容易上手,功能雖多卻不會像 Visual Studio 般繁亂,是個老少咸宜的好軟體。
:::

:::success
首先,前往 VS Code官網 下載之

之後全勾安裝後打開,可以得到如下畫面

我們可以先至你想要編輯的資料夾,此處以這個 ai 資料夾為例

右鍵點擊 Open with Code

之後 VS Code 就會將此資料夾作為一個工作區,在 VS Code 中開啟

之後點擊紅框處的新增檔案,創建一個測試用的 .py 檔。

接著,將以下 tensorflow 官方測試代碼複製到檔案內。

1
2
3
4
5
6
7
8
9
10
11
import tensorflow as tf

class SquareTest(tf.test.TestCase):
def testSquare(self):
with self.test_session():
x = tf.square([2, 3])
self.assertAllEqual(x.eval(), [4, 9])

if __name__ == '__main__':
tf.test.main()

此時,因為你所處的環境是 Anaconda 預設的環境中,並不包含 tensorflow 套件,所以會報錯。

我們可以點選左下角的選項,以察看與切換環境

點擊後,我們可以切換到到方才設定的環境 tensorflow

此時,我們可以注意到右下角的 pylint 以及諸如此類的提示,可以選擇安裝他們,讓開發更加順利。

下方命令行會自動打開,並顯示已成功安裝。

接著,點選左邊的紅框處,然後按下綠色三角形箭頭偵錯

選擇 Python

若得到以下畫面則代表設定與安裝順利

之後也可以使用 F5 來偵錯。
但若有其他慣用偵錯快捷鍵,可以透過 Ctrl + Shift + P ,搜尋開啟鍵盤快速鍵

或是使用 Ctrl + K 緊接著按 Ctrl + s 來開啟

接著上方欄位中搜尋 F5

點選左邊的小鉛筆,再輸入你想要的鍵盤快捷鍵後按 Enter 就大功告成囉。

:::

結語

希望讀者都能夠在本筆記中學到想學習的東西,也恭喜您成功設定完成 Tensorflow 的基礎設定,但 AI 的學習如同汪洋大海般,遠不只如此,僅此希望能夠帶給您一個好的開始與學習體驗,持之以恆,努力前進。共勉之。

:::warning
若對於此筆記有任何錯誤、或是沒有詳盡提到的地方,都非常期待您與我聯絡,能與您的共筆是我的榮幸。歡迎將更多的建議寫在其他 HackMD 中,我將以連結的方式將其引入;或是將建議寄送到我的信箱: william.mou960174@gmail.com
:::

其他參考資料

https://blog.csdn.net/LOVE1055259415/article/details/80343932
https://zhuanlan.zhihu.com/p/30324113
https://rreadmorebooks.blogspot.com/2017/04/win10cudacudnn.html
https://zhuanlan.zhihu.com/p/37086409