Final Project Concept
在不會被注入 XSS 的部分允許 innerHTML
CSS 輪播效果不強制動畫
第四週使用 JWT 做會員系統
非同步概念
bootstrap css design pattern 一個元素多個 class name,老師一個元素一個 class name,除非狀態 active
https://www.quora.com/How-do-I-upload-a-file-to-REST-API
https://sass-guidelin.es/#the-7-1-pattern
Pending
Judging
Final Project Concept
Definition
Person
- User: Frontend user from browser
- Infra: Infrastructure engineer for deployment who Known docker but not AI background
Program
- Frontend: Frontend brower (e.g. Chrome)
- Backend: backend server (e.g. EC2)
- Storage: Storage server (e.g. S3)
- DLServer: Deep learning server which is user deployment in docker image
- DLClient: Deep learning client which is user deployment in docker image
- DLMonitor: Deep learning DLMonitor which is User deployment in docker image
- InferSrv: A server provide inference api (e.g. EC2)
Hardware
- EC2: backend + InferSrv
- S3: storage
- Training Server: DLServer + DLClient + DLMonitor
AI
- model: A file or files. It can do specific things like object detection. Just like the flow of the algorithm
- fine-tuning model: A base model for start training
- dataset: A group of images and annotations
AI process explanation
- training: A method to generate a new model
- inference: Use model to get result
User story
Create Account
- User click login on frontend
- User input necessary information on frontend
- User click signup
- Frontend send information to backend
- Backend response the result
backend
- GET: /api/member/signout
- POST: /api/member/signin
- POST: /api/member/signup
Create Dataset
- User prepare images and annotations by himself
- User upload images and annotations on frontend
- ??? How to send image to storage ???
- Select a group of images as dataset
backend
- POST: /api/image/upload
- POST: /api/annotation/upload
- PUT: /api/dataset/id/select
Create Training Project
- User select fine-tuning model on frontend
- User select dataset on frontend
- Frontend send info to backend
backend
- PUT: /api/training/project/model
- PUT: /api/training/project/dataset
Deploy Training Server
- Infra prepare a server with docker
- Download docker image which is provide on frontend, docker image including
- GPU driver
- Training enviroment (python/tensorflow)
- Training server
- Training client
- Training DLMonitor
- — Tunneling Protocol??? vscode 127.0.0.1 —
- Run docker — [more detail see validate training server]
- Run training server
- Run training DLMonitor (checking state per 10 sec)
- Infra/user comfire server info on frontend (how to switch key??) — [more detail see validate training server]
backend
- GET: /api/training/state
Validate training server
- DLMonitor request auth key to backend
- Frontend pop up an info for user (how to do it???)
- User comfirm info on frontend and click
- DLMonitor get a key (???)
Training Process
- User click start training on frontend
- Backend update “training request” to pending
- DLMonitor is obtained “training request” by polling (10s)
- DLMonitor start a DLClient process
- DLClient is the middle man between DLServer and backend
- DLClient tranfer fine-tuning model and dataset url to DLServer
- DLClient send a training request to DLServer
- DLServer download fine-tuning model and dataset url
- DLServer training
- DLClient transfer training progress to backend (10s or has new)
- DLClient transfer result and model to backend on finishh
Inference Process
- User select a model and a image on frontend
- Frontend send request to InferSrv
- Frontend get result from InferSrv
- It also can provide sample code about inference
Program
DLMonitor
- First time connect to backend server with socket
- Waiting for user comfire
- Backend send a key(???) to DLMonitor
- Every 10 sec send a HTTP request to update “state” on DL (training/idle)
- Every 10 sec send a HTTP request to get “training request” from backend (pending/idle)
- Every 10 sec send a HTTP request to get “state” from DL (training/idle)
DLServer
- Provide training progress (progress or idle)
- Provide upload dataset
- Provide upload fine-tuning model
- Provide start training
- Provide get last training state (success/failed)
DLClient
- Call DLServer API and transfer to backend
- It will make DLServer and backend to work dependency
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.




