[生活] 2024 TSMC IT CareerHack 校園黑客松

參加

這次是受到了晨鍾的邀請,來參加今年2024年的台積電校園黑客松。想說趁著上次在梅竹黑客松得到的好成績,順著這個氣勢繼續看能不能拿下第二個獎項,於是便報名了這個比賽。

我們一開始在看主題時,因為我和禾堃在的讀書會已經讀過許多與CV(Computer Vision)相關的paper與實作,因此我們決定選擇「AI看圖說故事」這個主題。

初賽

為了能在1/26,1/27實際到他們台北的辦公室比決賽,我們必須參加線上初賽。基本上就是測試有沒有寫程式的能力,語言提供了像是C++, python, Java等等可以選擇,題目也相對簡單,我的題目就只是greedy還有一些很基礎的題目。而朋友那裡聽到似乎還有tree相關的題目就是了。不過真的是偏基礎,讓我回想起大一程設晚上上機的時光了

總之初賽我個人感覺初賽和決賽的東西沒什麼關連啦。覺得用這個機制篩人蠻意外的。(據說報名是100多組,他們最後要選24組的樣子)

決賽

之後就是通知我們進了決賽,還有題目及黑客松的時間之類的資訊。我們也就開始準備。

題目:AI看圖說故事

主辦方提供了一個dataset,裡面有一些有安全帽的圖片,以及和gpt的對話結果;還有利用LoRA pretrained好的LLaVA模型。我們的任務是利用這些資訊,來做出一個system可以對一個圖片進行處理,並回答以下問題:

1
2
3
4
5
6
7
8
9
{
"Q1": "Is there any people not wearing a helmets? Please answer with true or false.",
"Q2": "How many people are there in the image? Please give a single integer answer.",
"Q3": "How many people are there and wear a helmets in the image? Please give a single integer answer.",
"Q4": "How many people are there and not wear a helmets in the image? Please give a single integer answer.",
"Q5": "Tell the color of the helmets that people wear in the image from this list: red, yellow, blue, white, green, orange, black.The answer may be more than one color.If there is no one wear a helmets, please answer None as response. ",
"Q6": "What is the warning message shown in the image? Just give me the warning sentence.",
"Q7": "Is there anyone violating the warning message describe in the image? Please answer with true or false."
}

最後,會是使用主辦方提供的private set來進行評分。最終分數的7成會是以上述輸出的結果正確性來判斷。只有3成是現場demo的表現來決定。

這樣的評分機制除了和我上次參加的梅竹黑客松完全不一樣之外,還有以下問題讓我蠻不理解的:
他的private set只有107張圖片,讓我們生成結果的時間有快1個半小時,如果有心想要的話手動把所有答案手動標注也不是辦不到的事。這樣要如何確保沒有組別手動把所有答案填上去?雖然有人巡視並告誡我們不要作弊,但還是想想覺得不太合理。

在GCP(Google Cloud Platform)上遇到的問題

而這次他們也請google cloud提供了運算資源讓我們使用,但其實就我們的使用過程來說,並不是很順利。

我們在嘗試finetune instruct-BLIP時,就曾經把RAM塞爆,而導致整個instance直接壞掉,而在賽前也有一次不知為何我們的instance也壞掉了,還收到了他們寄來的信問我們是不是做了什麼讓它壞掉,但我們也完全不懂到底發生了什麼,我們其實也沒有做什麼特殊的操作就是了。

舉例來說,他們提供給我們的instance就有壞掉過兩次:

  • 第一次是發生在黑客松後2天,我就突然收到了主辦方信來的信提醒我們我們的instance爆了,問我們是不是有下什麼指令。但其實我們也沒有特別做什麼操作,所以我們其實到現在還是不懂那時候機器到底發生了什麼。
  • 而第二次是發生在比賽前一天,那時候我們把instruct-BLIP打算load進instance來finetune,結果似乎是把disk塞爆了,結果整個instance也就這樣掛了。

無獨有偶,除了instance之外,提給我們的bucket也有出現問題:
在比賽前以及比賽時,我和禾堃都有遇到要把大檔案從instance丟到bucket時permission error的問題。是到了當天他們google cloud小組的人員來提供支援後,才發現問題是因為他會多向bucket要一個get的指令,而我們的instance一開始似乎沒有這個權限,所以才會造成這個問題。

不過要提到的是他們工作人員其實真的非常積極,遇到問題基本上都是馬上處理,那時候在修bucket的問題我十分的感受到他們的積極度,也因此倍感壓力(有6~7個人圍著自己的壓力真的不是開玩笑的…)。總之,真的很感謝他們的幫忙!

結果

雖然整個比賽遇到了許多狀況:像是許久未好的腸胃炎、被google拒絕intern的申請、還有加上第二天的伙伴少了一人(他跑去日本了😢)等等,或多或少影響了這兩天的發揮,所以做的事真的遠低於自己的期待值。但我覺得這次沒有發揮好更重要的原因其實是「我們太晚開始做」以及「理解錯題意」。

太晚開始

因為我們從工作坊結束後,基本上只有簡單地進行paper review,並且針對LLaVA, BLIP, Flamingo三種架構進行測試,而我們是到很後期才發現主辦方提供給我們的資源其實根本不夠BLIP還有Flamingo進行使用,所以有很多的時間都是對最後的結果相對沒有幫助的。另外,我在那幾天因為身體的關係,其實也只有簡單的地對資料進行分析,並沒有至少先跑過他的sample code來finetune LLaVA,這件事是直到比賽當天才做的,所以我覺得我們真的太晚才開始動工了,以比賽兩天我們能做出的結果,或許最多也就只有這樣吧。

理解錯題意

在最一開始我們看到題目時,我們幾個想到的就是「前面幾題真的需要用到生成式模型嗎?」要求的問題其實都用我們學過的CV model應該都能很好解決,為什麼有需要用到生成式模型(當然像是Q7這種要問邏輯問題的,我們也覺得需要用到)?於是乎我們就寫信給主辦方詢問能否使用computer vision的模型回答,但得到他們的回應是「不建議使用專材型的model一一回答,因為像是第7題就需要較general的能力」。雖然我們也覺得他沒有回答到我們的問題,但我們也就理解為他們「不希望」我們使用非生成式模型了。結果到了比賽當天,我們也看到了許多組將CV model的輸出結合question成新的prompt放入LLM,讓他生成結果。我們當下除了感嘆其它組別的創意,也懊悔那時理解錯主辦方的意思,也就沒有往結合影像辨識與LLM的方向去思考。這是這次比賽中我覺得最可惜的地方。

心得

這一次的比賽因為沒有盡全力所以感覺到很可惜,雖然最後收到了評審的讚美:「你們很可惜耶!你們是boarder(第四名)!而且你們才大三,超年輕的,其他組都是研究所了的吧!」,而且我也覺得大機率是安慰話,不過聽了心情還是有變得比較好,真是神奇。不過這一次的經驗正好可以讓我初探LLM的整個架構,並且還有機會實際用deepspeed來finetune一個模型,可以說是完美地對上了實驗室教授之後要給我的任務。所以我現在也換個心態,認為這次的比賽能有這樣的收獲其實就已經很足夠了,其他的就留給之後的自己努力。希望未來的自己回來看參加這場比賽的自己,能夠覺得自己已經成長很多!


[生活] 2024 TSMC IT CareerHack 校園黑客松
https://torrid-fish.github.io/life-tsmc_2024_hackthon/
Author
Torrid-Fish
Posted on
2024年1月27日
Licensed under