iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目一 AI 技術應用與規劃・114 年第二次・L21・第 29 題

CI 持續整合的核心實踐是什麼?

原題

某 AI 開發團隊為提升模型開發效率及品質控制,計畫實施持續整合(Continuous Integration, CI)流程。下列哪一項做法最符合 CI 的核心實踐,且能有效減少整合風險?

白話

一個 AI 開發團隊想導入「持續整合」(Continuous Integration,CI)這套工程流程,目的是提升效率和品質,同時降低整合時出現問題的風險。

問你:哪一項做法最符合 CI 的核心實踐,且能有效減少整合風險?

一句話總結

CI(持續整合)的核心是:每次有人提交(Commit)程式碼,就自動跑建置、單元測試和靜態分析,讓問題在「剛犯錯的那一刻」就被抓到,而不是等幾天後整合時才發現一堆衝突。

情境

先感受問題:5 個工程師同時改程式碼

假設「AI 新創公司晨曦智能」有 5 個工程師,各自負責不同的模型元件:

小明:負責資料前處理模組

小花:負責特徵工程模組

阿偉:負責模型訓練模組

小菁:負責評估指標模組

大衛:負責 API 服務模組

他們同時在各自的分支上工作。問題來了:

  • 小明改了資料前處理的輸出格式
  • 小花的特徵工程模組依賴那個格式,但她不知道小明改了
  • 兩個人的程式碼各自測試都沒問題
  • 等到「星期五下午要合版」才發現:整合後整個 pipeline 跑不起來

這就是「整合地獄」(Integration Hell)。等到最後才合版,衝突堆積如山,找 bug 又急又難。

CI 的哲學是:不要等,每次提交就自動測試,立刻知道有沒有破壞東西。

舊方法

「等很久才整合」的五個坑

  1. 衝突堆積:5 個人各改一週,合版時衝突可能有幾百行,每一個都要手動確認,耗費大量時間。
  2. bug 難追蹤:不知道是誰哪一次 commit 壞掉的,只能從頭一行一行 debug。如果每次提交就測,至少知道「這次提交前沒問題,這次提交後有問題」,問題範圍縮到這次的改動。
  3. 心理壓力放大:「等一週才合版」讓工程師要承擔「累積一週的 bug 可能在星期五爆發」的壓力,反而會讓人更不敢改動。
  4. 手動合版靠人不靠系統:「每天固定時間手動合版」依賴工程師記得執行,有人出差、生病就漏掉,品質不穩定。
  5. 靜態分析被跳過:測試流程繁瑣時,工程師容易為了趕時間跳過靜態程式碼分析(linting、型別檢查),讓潛在問題溜進主分支。

新方法

每次 Commit 自動觸發,怎麼解

回到晨曦智能。導入 CI 後的流程:

小明修改資料前處理模組,推送(push)到 GitHub。

git push origin feature/data-preprocessing

GitHub Actions 的 CI pipeline 自動啟動:

1. 建置(Build):確認程式碼能編譯、套件能安裝

2. 單元測試(Unit Test):跑 test_preprocessing.py,確認小明的模組輸出格式正確

3. 靜態分析(Static Analysis):flake8 檢查語法、mypy 檢查型別

4. 整合測試(Integration Test):模擬小花的特徵工程模組讀取小明的輸出,確認格式相容

如果任何一步失敗,小明立刻收到通知,在自己的 commit 就修好,不會把問題帶給其他人。

這就是選項 B 講的:每次程式碼提交(Commit)後自動觸發建置、單元測試及靜態程式碼分析。

錯選項

為什麼其他選項是錯的

A在主分支(Main Branch)每日固定時間手動合併並執行完整測試流程

字面在說什麼

每天設定一個時間(例如下午 5 點),工程師手動把各自的分支合進主分支,然後跑測試。

為什麼不對

「每日固定時間」和「手動合併」這兩點都違背 CI 的核心精神。CI 強調「持續」:不是一天一次,而是每次提交都觸發。一天一次意味著問題可能累積 8 小時才被發現;手動執行意味著靠人記得做,一旦有人忘記或省略,品質保證就破功了。CI 必須是自動化的,不依賴人的記憶或紀律。

誰會選錯

聽說「每天要整合」就以為 A 是對的考生。記住:CI 的「持續」不是「每天定時」,是「每次 commit 立刻」。頻率差了幾十倍,問題發現的速度也差幾十倍。

C於模型訓練完成後,定期安排開發團隊回顧並合併程式碼

字面在說什麼

等模型訓練完成(可能是幾天或幾週後),再召集團隊一起回顧這段時間的程式碼,然後做合版。

為什麼不對

這完全是「等很久才整合」的反模式。AI 模型訓練可能跑好幾天,這期間累積的程式碼衝突和 bug 可能多到難以清理。「回顧後合併」也是手動人工流程,沒有自動測試。這個選項更接近「Code Review」(程式碼審查)的概念,而不是 CI。

誰會選錯

把「Code Review」和「CI」混在一起的考生。Code Review 是人工審查邏輯,CI 是自動化測試基礎設施,兩個是不同層次的品質保證機制,可以並存但功能不同。

D透過自動化部署腳本,將模型在特定時間點批次釋出到測試環境

字面在說什麼

寫一個自動化腳本,在固定時間(例如每週一)把模型部署到測試環境。

為什麼不對

這描述的是 CD(Continuous Delivery 或 Continuous Deployment,持續交付/部署),不是 CI。CI 的重點在「建置和測試」,確認程式碼正確;CD 的重點在「部署」,把通過測試的版本送到環境。另外,「特定時間點批次釋出」也不符合「持續」的精神,持續部署是「通過測試就自動部署」,不是「每週固定時間」。

誰會選錯

聽過「CI/CD」但分不清 CI 和 CD 邊界的考生。記住:CI = 整合(測試)、CD = 交付(部署)。D 選項在做 CD 的事,但題目問的是 CI。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 29 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。