親愛的同學們,
感謝各位對於這門課的興趣,2022年二月春季班我們將第一次開設這門以人工智慧運算晶片設計為主題的入門課程,為了協助各位更了解這門課程是不是適合你,這封信會針對我們開課的目的、課程設計的方式、課程的要求與我們想招收的學生做一些說明。由於這門課是選修課程並非必修課程,當你決定來修這門課的時候,請認真思考你修課的目的是否與我們課程設計的核心概念相符合,我們希望把所有的教學資源用於協助真正需要的同學,由於成大選課系統的諸多限制, Playlab 過去的一些課程, 常常讓選課的同學在選課上出現一些困難與問題, 所以這學期我們採用登記選課的方式, 希望能讓適合的同學選到這門課,而不是選了課之後退選或是要花費不必要的時間在選課系統上掙扎,為了避免造成一場美麗的誤會,耽誤了各位同學的青春,與錯置教學團隊一廂情願的熱忱,希望各位詳細了解這封信裡的細節,並審慎評估這門課是否適合你,整個教學團隊希望能把資源留給真正想修這門課的同學。
開課目的
這門課是智慧運算學分學程裡作為人工智慧加速晶片設計介紹的入門課程, 我們設定給必須具有基本C or C++ programming 能力的同學來選修,同時希望同學在上課之前要有一些基本的數位設計邏輯概念, 如果有修過computer architecture 或是 VLSI design 的同學來修這門課,相對會比較簡單, 沒有修過相關課程的同學, 需要花比較多時間來學習跟實作lab ,相關的課程在電資學院或是工學院的一些科系可能有提供, 而這門課跟其他系統相關課程的不同之處如下:
- 著重於介紹人工智慧加速晶片設計的基本開發流程與實作
- 著重於軟硬體協同設計的概念
- 著重於理解通用型(general-purpose) 跟客製化(domain-specific) 設計上的差別
- 著重於介紹如何用軟體模擬硬體設計的方法
人工智慧加速晶片在過去幾年快速蓬勃地發展,有別於傳統晶片設計,人工智慧晶片的開發並沒有一定的標準架構,不同人工智慧應用領域所需要的人工智慧晶片也有所不同,並沒有一個通用型的人工智慧晶片能滿足所有應用的要求。這門課目的在引領你知道學習人工智慧晶片設計的基礎必備知識,了解晶片設計在人工智慧應用上所需考量的議題,如果你修完這門課能了解到自己的興趣所在,敏求智慧運算學院未來有一系列的相關基礎與進階課程,能協助你強化自己的背景知識與專業技能,做好投入職場或是高等教育的準備。這門課的實作部分會花費很多的時間,如果同學能完成這門課的所有實作作業與專題,我預期同學在申請Internship 或是相關研究所領域時,會因為這門課打下很好的基礎。
課程設計的方式
人工智慧晶片設計橫跨多個領域的專業,在短短18週的課程中,很難一窺全貌,在這門課中,我們會以主題式學習的方式,來介紹一些基本的理論與實作基礎。我們的課程分為下面幾部分:
- 基本理論教學
這門課每個階段的教學會有一個主題,可能是該主題的入門概論,可能是理論基礎課程,也可能是從實作面出發的主題討論課程,在期末專題提案之前,每一個探討的主題,都是為了協助同學了解人工智慧晶片設計的流程與基礎,有了這些基本知識之後,期末的專題提案,我們提供幾個可能的方向,讓同學能應用所知所學去設計基本的人工智慧運算加速功能。
主題1. AI 模型與相關運算介紹 — 這個主題主要介紹Neural Netowrk 的模型運算都在做什麼?有什麼特性? AI 運算加速晶片主要要解決的問題是什麼
主題2. 數位設計基礎 — 為了設計基本的人工智慧加速功能,我們會介紹基礎的數位設計概念,包含Datapth 跟 Finite state machine Design,同時介紹一個硬體設計程式語言Chisel, 以及相關的實作。
主題3. 軟硬體協同設計基礎 — 人工智慧晶片的設計可以分為通用型與客製化的設計,也可能是混合型的異質性系統,無論是那一種設計方式,AI 的加速功能都是透過硬體與軟體的協作設計來達成的,在這個主題中,我們會透過介紹基本的RISC-V 微處理設計,來說明整個軟硬體協同設計的流程。
主題4. 人工智慧運算加速專題實作 — 最後這部分的主題是期末專題實作,我們的期末專題提案可以接受下面兩種提案:
方向 1. 自己制定或改善 RISC-V 的指令集來實作AI 運算加速功能
方向 2. 設計一個 memory mapped 的 AI 加速裝置來實作特定的AI 運算加速功能
根據這兩個方向, 我們會在課堂上分別教授基本的實作基礎概念
2. Lab
這學期我們特別針對這門課程,設計了軟硬體整合的實作課程,讓同學在理論學習之外,能有親自動手的機會,練習一些有趣的工程實作,這些Lab 跟課程的關聯性很高,需要花時間練習跟理解,同學要有心理預期每週會需要投入一定時間 (5–10 hrs) 來完成Lab 作業:
- AIAS Lab 0 — Introduction and working environment setup (Week 1)
- AIAS Lab 1 — C programming review
- AIAS Lab 2 — C memory management review
- AIAS Lab 3 — RISC-V assembly
- AIAS Lab 4 — RISC-V emulator
- AIAS Lab 5 — Chisel Tutorial && Datapath Design
- AIAS Lab 6 — Finite State Machine Design
- AIAS Lab 7 — RISC-V Implementation I — Single Cycle CPU Design
- AIAS Lab 8 — RISC-V standard Extension && SIMD instructions
- AIAS Lab 9 — Memory-Mapped I/O && Conv2D Acceleration
- AIAS Lab10 — RISC-V Implementation II — Simple RISC-V 3-stage Pipeline in Chisel
4. Invited Speaker
每學期我們都希望安排特別來賓的演講,邀請的清單會在演講時間接近時公告,我們希望透過這些來賓,跟大家介紹外面業界的現狀與給同學一些學習求職的建議。
5. Final Project
這門課程我們沒有期末考,有一半的成績是期末專題相關,期末專題以分組方式進行,主題是人工智慧運算加速實作,這學期的期末專題提案可以有下面兩個方向:
方向 1. 自己制定或改善 RISC-V 的指令集來實作AI 運算加速功能
方向 2. 設計一個 memory mapped 的 AI 加速裝置來實作特定的AI 運算加速功能
每個提案的完成度分為下面幾個階段:
A. 單一AI 運算加速
B. 多個AI 運算加速
C. 效能分析比較
選課的要求
這門課我們不點名,但是我們著重各種形式的課程參與,鼓勵大家提問跟參與討論,每週的作業與Lab預計是5–10小時的loading,基本的評分標準如下:
- Lab 40%
- Class Participation 10%
- Project 50% (10% for proposal, 40% for final presentation)
整體來說,你要在這門課及格的基礎是作業、Lab 與project 要做到基本的要求,要有更高分數的方法如下:
- 作業與專題(>60) 能完成、Lab與project 均有完成即有60分
2. 達到60 分的標準後,如果Lab 與project 的分數跟quality 能高於平均,你的分數就有80 分。
3. 如果你的final project 表現能在top 25% ,或是 你的課程討論參與度很踴躍你的分數就會有機會上90分
期末時如果成績與你的預期有落差,老師會開放extra bonus points ,有一些同學為了爭取更好的分數,可以選擇提案加分的方式
這門課的評分標準設計,是希望同學能付出時間與努力來學到該學習的內容,教學團隊不只不希望為難同學,更希望幫助同學透過自己的努力爭取高分,而且每個人事實上只要願意花時間努力,都有高分的機會。
你是否適合修這門課的建議
以下類型的同學,我們會建議不要來選修這門課:
- 只是為了湊學分的同學
- 除了上課,沒有時間寫作業跟做final project 的同學
- 會想翹課的同學
這門課並非必修課,因為Lab 跟上課的內容都不是你自己上網找資料就一定會做的,所以我們希望修課的同學能盡量來上課,我們期待同學來上課時會覺得花的時間有意義,並且有所獲得,除了我們教學團隊應該兢兢業業不斷努力於教學品質的提升,更需要同學跟我們一起努力。
依據老師過去的經驗,同學可能會有一些錯誤的想像:
- 修這麼課不太需要花時間 — 這門課的內容跟業界的工作內容沒什麼太大差別,只是我們簡化了很多設計題目,但是用比較新的流程與工具來讓大家實作,因此實際狀況是每週要花不少時間,Final project 有很多人會選擇花更多時間。
- 修這門課花太多時間 — 雖然Lab/Final Project看起來很多事情,但是因為教學團隊做了很多設計,如果同學遵循我們的建議,都有來上課,同學會比較用很少的時間做到要達成的目標,如果你不來上課,或是都拖到最後一刻才開始,又或者沒有遵循教學團隊的建議,你很可能會事倍功半,耗費非常多時間。
- 神隊友永在 — 雖然final project 我們會分組,但是評分部分是依據你的個人表現與貢獻來評分的,所有人都應該在final project 裡扮演一部分的角色,有自己的貢獻。