# [資訊科技產業專案設計課程作業 3](https://hackmd.io/@sysprog/info2024-homework3)
## Edge AI Team
### [Google Edge AI job](https://www.google.com/about/careers/applications/jobs/results?distance=50&q=edge%20ai&location=Taiwan)
> Google 在台灣關於 edge ai 的職缺主要為 pixel camera ISP 的設計以及設計輔助 ASIC 的軟體
Assessment:
1. 需要理解 ISP 的原理以及機器學習如何應用在ISP
2. 需要了解 LLM、Genrative AI
3. 需要了解 PDAF、LDAF、Contrast AF algorithms or any ISP blocks
4. 需要了解 ASIC 的架構、HBM、PCIE
5. 需要了解 IC 設計流程
:::spoiler 職缺內容
[Software Engineer III, Machine Learning, Camera](https://www.google.com/about/careers/applications/jobs/results/82182387173073606-software-engineer-iii-machine-learning-camera?q=edge%20ai&location=Taiwan&page=1)
#### Minimum qualifications:
* Bachelor’s degree or equivalent practical experience.
* 2 years of experience with software development in one or more programming languages, or 1 year of experience with an advanced degree in an industry setting.
* 2 years of experience with data structures or algorithms.
#### Preferred qualifications:
* Master's degree in Computer Science or Electrical Engineering, or a related field.
* 5 years of experience in the relevant industry.
* Experience in **image processing**, **computer vision**, and **computational photography** development.
* Experience with **Machine Learning (ML) based image processing model** design.
#### Responsibilities
* Develop, implement, and deploy **Imaging Signal Processing (ISP)** features aligned with emerging camera technologies.
* Develop **camera ISP Machine Learning (ML) model** design to achieve image quality, latency, and power targets.
* Collaborate with related teams including the silicon, hardware, software, research, and camera tuning teams to develop novel solutions to achieve quality and performance targets for commercialized products.
[Software Engineer, Auto Focus, Pixel Camera](https://www.google.com/about/careers/applications/jobs/results/103573350726410950-software-engineer-auto-focus-pixel-camera?distance=50&q=edge%20ai&location=Taiwan)
#### Minimum qualifications:
* Bachelor’s degree or equivalent practical experience.
* 2 years of experience with software development in one or more programming languages, and with data structures or algorithms.
* 2 years of experience with machine learning algorithms and tools (e.g., TensorFlow), artificial intelligence, deep learning, or natural language processing.
* Experience with Large Language Models, NLP, or Generative AI.
#### Preferred qualifications:
* Master's degree or PhD in Computer Science or related technical fields.
* Experience developing accessible technologies.
* Experience programming with Python.
* Experiences in Machine Learning and TensorFlow.
#### Responsibilities
* Design methodology for automated tuning/testing/simulation to reduce manual labor.
* Engage with different sensor and module vendors and incorporate the new technology into Google products. Work with different SOC vendors to integrate the algorithms onto their platforms.
* Implement, optimize, and integrate the algorithms onto device platform goals.
* Develop auto focus, PDAF (Phase Diff Auto Focus), LDAF (Laser Detection Auto Focus) and Contrast AF algorithms or any ISP blocks for mobile device cameras.
[Senior Software Engineer, TPU, Google Cloud Platform](https://www.google.com/about/careers/applications/jobs/results/118229160911872710-senior-software-engineer-tpu-google-cloud-platform?distance=50&q=edge%20ai&location=Taiwan)
#### Minimum qualifications:
* Bachelor’s degree or equivalent practical experience.
* 5 years of experience with software development in one or more programming languages, and with data structures/algorithms.
* 5 years of experience in system software development in C or C++.
* 3 years of experience testing, maintaining, or launching software products, and 1 year of experience with software design and architecture.
#### Preferred qualifications:
* Master's degree or PhD in Computer Science, or a related technical field.
* Experience in hardware/software co-design at the chip-level.
* Experience in embedded systems.
* Familiarity with High-Bandwidth Memory (HBM), Peripheral
* Component Interconnect Express (PCIe), and ARM.
* Familiarity with security and confidential computing.
* Familiarity with Machine Learning.
#### Responsibilities
* Architect, design, and build firmware running on embedded microcontrollers with limited memory footprints on the accelerator ASIC such as power-on and reset of the ASICs, initializing low level hardware, power management, and security.
* Contribute to all layers of the data center software stack to deploy accelerator Application-Specific Integrated Circuits (ASICs) to production.
* Architect, design and develop tools to update and debug ASIC firmware. Enable chip bring-up and hardware debugging.
* Build functional or cycle level simulators that bit accurately and model the custom accelerator ASICs. Build tools and infrastructure to help ASIC design verification, tapeout, and bring-up. Develop embedded CPU simulators as part of the full system simulator.
* Co-design hardware/software interface, working closely with the Hardware Design and Development teams.
:::
### [Mediatek Edge AI、Machine learning job](https://careers.mediatek.com/eREC/JobSearch?sortBy=WorkExp&order=descending&page=1&searchKey=edge%20ai&category=&workExp=&branch=&program=)
>聯發科的 ai edge 的工作內容也是關於影像處理, machine learning 的工作有像是開發公司內部
> [一鍵生成PPT、幫人資篩履歷 聯發科AI助理「達哥」,外部公司也想用](https://www.cw.com.tw/article/5130977)
Assessment:
1. 理解 ISP
2. 操作過 Parallel and Distributed Deep Learning
3. Kaggle 競賽且有得名
:::spoiler 職缺內容
[電腦視覺與影像處理演算法工程師](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120240920003?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3DWorkExp%26order%3Ddescending%26page%3D1%26searchKey%3Dedge%2520ai%26category%3D%26workExp%3D%26branch%3D%26program%3D)
#### Requirements
1. 熟悉電腦視覺演算法
2. 熟悉影像處理演算法
3. 熟習深度學習架構: Pytorch, Tensorflow
4. 熟悉 Python, C/C++ 程式設計
#### Responsibilities
1. AI 電腦視覺演算法開發
2. AI 影像與視訊處理演算法開發
3. 針對 Edge AI 之演算法優化
[智能自動化系統/資深工程師](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120201102001?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3DExtJobCategoryName%26order%3Dascending%26page%3D2%26searchKey%3Dmachine%2520learning%26category%3D%26workExp%3D%26branch%3D%26program%3D)
#### Requirements
• This position requires a MS or PhD,
• This position involves a lot of personal interaction. Good verbal communication skills are required.
• Familiarity with Deep Learning Framework (Pytorch or Tensorflow) and Machine Learning.
• Familiarity with organizing large real-world datasets.
• Experience with DRL, GNN, GAN…etc.
• Ability to read/comprehend state-of-the-art AI papers (e.g. GNN, RL…).
#### Preferred qualifications:
• Experience in scientific and numerical programming in C/C++/Python.
• Experience in IC Design Flow (RTL, HLS, DV, P&R…).
• Experience with Kaggle competitions. (Gold/Silver medals awarded)
• Experience in Parallel and Distributed Deep Learning with multi-GPU & multi-machine.
#### Responsibilities
(1) landing AI in real world
(2) publication at top conference/journal (DAC, IEEE/TCAD, ICLR, ICML…).
:::
### [Qualcomm Edge AI job](https://careers.qualcomm.com/careers?query=Edge%20ai&location=Taiwan&pid=446702156656&domain=qualcomm.com&sort_by=relevance&location_distance_km=0&triggerGoButton=false)
Assessment:
1. 理解如何將機器學習應用於相機系統
:::spoiler 職缺內容
[Machine Learning Engineer](https://careers.qualcomm.com/careers?query=Edge%20ai&location=Taiwan&pid=446702156656&domain=qualcomm.com&sort_by=relevance&location_distance_km=0&triggerGoButton=false)
部門: Qualcomm's Multimedia R&D computer vision Group
#### Must have Qualifications
* Master's or PhD degree in Electrical Engineering, Computer Science, and/or closely related field.
* 3+ years of professional experience in computer deep learning software development for applications like Computer Vision or Computer Graphics.
* 2+ years of experience developing practical deep learning algorithms using PyTorch, TensorFlow, or other deep learning frameworks.
* Solid Background in software development, Computer Vision or Computer Graphics.
* Solid background in machine/deep learning fundamental knowledges and mathematics.
* Proficiency in C/C++ and Python programming.
#### Preferred Qualifications
* Excellent knowledge of C++ and object-oriented programming, capability to design and implement robust, high-performance, and flexible system software.
* Professional experience in **GUI and Unreal Engine/Unity** development is preferred.
* Expertise in various networks architectures such as VAE, GAN, diffusion, transformer, Gaussian Splatting, NeRF, U-Nets, ResNets models.
* Experience of deep learning model pruning, compression, and quantization for executing on edge device without performance decreasing.
* Excellent written and verbal communication skills.
* Track record of driving ideas from design through commercialization.
* Experience in **computer vision algorithm design development and integrating machine learning algorithm into camera systems**.
* Self-motivated and strong desire to learn new technologies, design novel techniques and propose them for technology commercialization.
* Team Player.
:::
### [Kneron Edge AI job](https://www.kneron.com/tw/careers/)
Assessment:
1. 發表論文於 AI 頂級期刊上
2. 理解各式的模型原理
::: spoiler 職缺內容
#### [Engineer of AI/Deep-Learning Algorithm (NLP, GenAI, Agent)](https://www.kneron.com/tw/careers/73/)
#### Requirements
* Possess an MS in Computer Science, Electrical Engineering, or a related technical field in Artificial Intelligence/Machine Learning with 3+ years of deep learning experience.
* Proficient in Python, PyTorch, Git, Docker, and Linux environment.
* Demonstrated excellence in academic record and/or engineering output through side projects, internships, research projects, or full-time jobs.
* Ability and enthusiasm to work in a dynamic, early-stage company environment.
* Open-minded, self-motivated individual who thrives in an OKR (Objective and Key Results) setting, adaptable, and always ready for change.
#### Preferred qualifications:
* Demonstrated creativity and effective communication skills.
* Possess Over 3 years of software engineering experience in academic or industrial settings.
* Exhibit a comprehensive understanding of deep learning concepts, state-of-the-art computer vision & NLP research, transformer architecture.
* Have a strong foundation in computer science, with expertise in data structures, algorithms, and software design.
* Demonstrate a track record of research excellence with your work published in top conferences and journals such as NeurIPS, ICML, ICLR, CVPR, PAMI, etc., and other research artifacts such as software projects.
#### Responsibilities
* Research and develop of **cutting-edge AI algorithms** in GenAI, LLM with RAG, NLP, and Multi-modality. Innovate and integrate advanced techniques to achieve unparalleled accuracy and efficiency in real-world applications.
* Explore a diverse array of topics, ranging from Agent-related tasks such as Personalized AI agents with compassionate empathy through sentiment analysis on audio/video/text, as well as tailoring personal memory, knowledge database, and relation database.
* Enable the communication with both people and agents through speech-related technologies such as Translation, Speech to text (STT), Text to speech (TTS), Noise cancellation, Speaker verification, Speaker diarization, and Meeting summarization.
* Continuously optimize algorithms and architectures for efficient and lightweight performance, with a strong emphasis on hardware-oriented frameworks.
* Build and maintain the infrastructure for training and deploying models, including data pipelines, experiment management platforms, and visualization tools.
* Engage in problem formulation, benchmarking, dataset analysis/collection, designing, and fine-tuning models to meet required accuracy and speed.
* Integration model components with the product stack
:::
## Self Assesment
### 優勢
* 成大電機學士
* 機器學習相關專題(醫學影像和無人機影像辨識)
* stm32F407、jetson nano 的開發經驗
### 劣勢
* 沒有了解且實做過LLM
* 對於ISP 相關知識相當缺乏
* 缺乏 Kaggle 競賽經驗
* 雖然有 stm32 和 jetson nano 的開發經驗,但是對於底層設計與架構(gpu、cpu 分工、CAN bus stack 等)沒有更加詳細的認識
* 缺乏對 linux kernel 的理解
* 沒有碩士學歷
### 改善方法
* ISP/DSP: 網路上線上課程和github 程式碼
* LLM: 結合樹梅派或是 jetson nano 做出一個 side project
* Linux Kernel: Linux 核心設計 :100:
* OS: 網路上開放課程
## 模擬面試
>:smile: :面試官 :blush::面試者
:smile: : 請解釋 SVM 與 logitic regression 的差別
:smile: : You are given an N-dimensional array (a nested list) and your task is to convert it into a 1D array. The N-dimensional array can have any number of nested lists and each nested list can contain any number of elements. The elements in the nested lists are integers. Write a function that takes an N-dimensional array as input and returns a 1D array.
## 面試題目參考連結
[2021 ML/SWE 面試心得分享](https://www.dcard.tw/f/job/p/236658254)
[Kneron Software Engineer Interview Guide](https://www.interviewquery.com/interview-guides/kneron-software-engineer)
[Google Machine Learning Engineer Interview (questions, process, prep)](https://igotanoffer.com/blogs/tech/google-machine-learning-engineer-interview)
[Qualcomm Interview Experience for ML and System Engineer](https://www.geeksforgeeks.org/qualcomm-interview-experience-for-ml-and-system-engineer/)