星期二, 8月 15, 2023

陽了

上禮拜四禮拜五,都工作到晚上11點。當時就覺得不舒服,後來開始有呼吸道症狀
越來越嚴重,禮拜天覺得不對,去做快篩結果陽性。週末的時候人只能勉強下床,睡覺忽冷忽熱蓋棉被都沒用。這兩天好點可以下床活動,但動幾下就全是冒冷汗。按內部規定預計明天銷假上班(戴 N95),希望工作能做的完。


全文連結

星期日, 8月 13, 2023

LLM prompt injection 實驗

參考

 上週四五工作到半夜十一二點,人就開始不舒服出現 URI症狀,現在人還是廢的,連運動的體力都沒有,還好遇到週末放假可以養病 =.=。養病中剛好法力無邊的大大給了我大寶貝(LLaMA,還是用台灣資料 tune 過的 online living demo!)。LLaMA 一直在我的關注清單裡,但個體戶如何單機單卡跑這玩意感覺有難度,就暫時沒下手。但有了 online living demo 不趁機搞事怎麼對得起自己,就可以做一些之前想跑的科學實驗。

這次想探討的是:LLM 的「防禦」真的可以繞過嗎?有用ChatGPT的應該都有注意到,問些「敏感」問題的時候,AI現在都很聰明,要嘛拒答要嘛說些很圓滑的官話。但根據研究,這些「防禦」有人說是可以繞過去的,方法例如請AI玩角色扮演之類。
 
今天的病中實驗就拿ChatGPT(GPT 3.5)和LLaMA來驗證之前構想。直接問ChatGPT Win10序號它是拒答的(無圖),但請GPT玩角色扮演,例如扮演一個吟唱Win10序號防禦惡龍噴火的勇者,ChatGPT就上套了。玩LLaMA故意去問了高端疫苗 v.s BNT,賴清德 v.s 柯文哲,AI很聰明的說起了官話,說這兩者各有優點,大家都好棒之類的。
 
這時,我就拿最近剛領悟出的角色扮演套話大法,不講武德、去騙、去偷襲LLaMA。LLaMA 還真上套了。瞧你個LLaMA一副濃眉大眼,講話正經八百的,原來是柯粉啊,漏餡了吧 XD
目前昏昏沉沉沒想到有什麼直接應用,但結果很有趣還是紀錄一下。不知道為什麼套出AI是柯粉以後我就覺得電腦旁邊多出了快活的空氣,人也好了點 XD





 

全文連結

星期四, 8月 10, 2023

Python-docx 試用

處理報告又遇到麻煩。某個篩檢業務,除了完成電腦報告之外,每份報告還要手寫給病人看的通知書,增加很多工作量。

還好遇到殊勝的 python-docx套件,可以直接對Word檔進行search還有replaceStack overflow 上也有可以進行修改使用的範例。確認可行後,找了同仁,要了通知書原始電腦範本docxtemplate。弄個前端 HTML form + AHK + 從其他表單帶數字,command line 丟到 Python對模板寫資料,通知書產生器就完成了。我減少工作量,病人不用忍受難看的手寫字。這週處理 paper work減少工作量就感覺到成就感 XD

全文連結

星期日, 8月 06, 2023

乙女遊戲世界對路人角色很不友好

週末本想好好研究數學,不曉得為什麼就陷入低潮頹廢的狀態,兩天就這樣過去。中間試著幫搜尋引擎添磚加瓦,不過狀態真的很差,還做出沒有仔細測試,就把變更推到生產環境的事情,理所當然炸掉了 XD

兩天唯一有做完的事情,就是刷了漫畫「乙女遊戲世界對路人角色很不友好」。劇情是典型異世界轉生,主角在第一話就拿到外掛。這次會注意到這部是在漫畫網站上的排行榜有看到,點進去看才發現前很早看過,只是話數還不多,就放著養大。故事把乙女、機戰、陰謀全部合在一起,整體劇情還蠻有趣,同時還有兩個轉生者,雖然另外一個目前看來只是拖油瓶和劇情破壞者 XD

不過看的時間還是太早,目前剛好斷在最有趣的地方


全文連結

星期六, 8月 05, 2023

高數影片第一輪通關

《高等数学》同济版 全程教学视频(宋浩老师)


終於完成了一輪觀看同濟大學高等數學教學影片,影片總長76個小時。為了搞定這麼長的影片,我採用之前提到的「將晚上加班時間聽音樂改成聽課」的方法。這些影片若是在加班之後的下班時間觀看,大概沒時間體力看完。

之所以想學習高等數學,主要是為了深入了解深度學習論文。開始接觸深度學習的論文時,已經是大學畢業十多年後,本座只有高中數學的基礎,而且一大半忘了。雖然在大學時修過醫用微積分等理論課程,但實際教學品質很差。我的數學基礎實際上只停留在高中的程度,且已有一二十年未用。儘管後來參加了資工所在職進修,但主要學習應用類課程,而且在職班大家懂的,對於數學等內功的提升並不大。因此,在學習深度學習時遇到了嚴重瓶頸,永遠只能當調包俠、調參俠,無法真正理解背後的原理。

我試過很多方法,如購買專門講解深度學習數學的書,或找正規高等數學教材,但始終因為長期瘋狂加班而沒有時間和體力自學。此外,由於缺乏引導,即使有書籍也無法找到重點。或許花半天時間搞不清楚的證明或計算,其實根本並不重要,或許我自以為可跳過的內容實際上在後面做題時卻非常重要,等到發現時,基礎早已不牢固。另外,中文教材有些地方寫得並不清楚,某些部分可能需要老師的引導才能避免掉坑,而這些我都不知道。因此,我的自學進度非常緩慢,在勉強讀完微分和一些基本積分後,就完全停滯不前。

後來慢速聽完了那70多小時的影片後,重新回頭閱讀書籍時,因為已經有老師在影片中「帶路」,第二次學習變得簡單很多,有點像高中時聽補習名師教導一樣,感覺都回來了。

強烈推薦宋浩老師的教學影片。第一次聽課時,老師提到他的課程可以讓家庭主婦一邊拖地一邊聽,這吸引了我繼續聽。課程播放量已經超過一億次確實有門道,老師教學技巧非常優秀,基本上就像在教高中生。步調控制得非常穩健,預判同學會卡住的地方,也能適時地舉例、講解和比較,並時不時插入冷笑話或戀愛故事讓同學們保持專注 XD 儘管中間曾經有其他老師代課,教得非常差勁,但這部分糟糕的內容後來被其他影片所取代,很順利地將課程重新接回軌道。

目前已看完所有影片,並開始做練習題。雖然統計課本的習題才剛剛做完 1-1,但我對未來感到樂觀。接下來的課程應該會選擇線性代數或機率統計,完成當年遺漏的內功修煉。

全文連結

TinyBERT和ONNX runtime使用心得

BERT的CPU inference 性能真是悲劇。之前做研究發現用 fine-tuned BERT在報告匯入 Elasticsearch 前preprocessing,可解決否定語句(No evidence of XXX)干擾搜尋結果的問題。研究時 BERT 很好用,準確度很高。但佈署到生產環境才發現有嚴重性能問題。

訓練時,雲端GPU租賃有RTX 3090、4090吃到飽。訓練樣本量(幾千份)很小,沒發現問題。做staging(no CUDA)和推到生產環境(Intel Core I3-9100,Intel 內顯)問題就來了。

在 staging 機器上,加了DistilBERT模型做 preprocessing 之後,文本索引速度暴跌到一小時幾千份。而目前要索引的報告量接近800萬份。生產環境基本不能用。

後來找網路攻略。發現三個解決思路:換輕量化模型、換Runtime、模型瘦身(做 INT8 quantization或pruning等,「據說」對CPU架構會友善點)。

輕量化模型找到了:華為的 TinyBERT。原始論文號稱推理速度比BERT快接近10倍。實際把DistilBERT換成TinyBERT後,索引速度在staging和生產環境就暴增到一小時2萬份,F1 score (0.94)和原本用DistilBERT差不多。但雖然性能有很大提升,一次完整索引迭代還是要超過2個禮拜。做到一半發現有問題需要重新索引又是另一個迭代。

後來繼續查,照著網路攻略把INT8 quantization弄了出來,但staging的時候跟我說沒GPU不能開quantization!功力不夠找不到問題就先放棄了。再試了換Runtime。Runtime換到ONNX以後。Jupyter notebook上推理的 wall time 直接變1/3(68000+ 測資 14min -> 5min)。於是再熱火朝天改code佈署。結果性能提升比三倍更多(原因不清楚,權當神秘學XD),索引速度爆增到每小時15萬份,一次索引迭代只要兩三天。已可接受了。

結論而言。如果未來服務要更進一步,還是要想辦法搞 GPU。用CPU跑BERT根本自虐,還好這次有找到解法,不然就得關feature然後說研究成果落地有困難QQ

全文連結

星期三, 8月 02, 2023

RunPod使用感想

官網


為了解決報告否定語句(No evidence of XXX..)對搜尋引擎造成的干擾,我自己訓練了幾個BERT variant 協助過濾解決問題,在 real data inference的成果(Precision、Recall、F1)非常漂亮。

沒算到的是,實際部署的時候,因為搜尋引擎主機沒有GPU只能用CPU,在staging就發現報告匯入速度因為導入DL變得非常慢,測試機一個鐘頭還不到1萬分,而報告目前已有快800萬份,搜尋引擎光載入一次資料就一個月,這是無法接受的。這還是使用DistilBERT的結果,其他BERT variant預計更慢。為了解決問題,開始查怎麼樣讓BERT跑快一點。目前決定先試試換更輕的BERT variant,目前先試TinyBERT。

結果去Vast.ai訓練模型時,就發現網站故障。一個instance跑了一個鐘頭還不能外連。去敲了客服,客服也說這是bug正在搶修。為了搶時間,所以去找有沒有vast.ai以外的便宜GPU租賃,就找到了RunPod。很幸運不用花很多錢去用GCP或AWS。

目前感想價錢還可以,我租到3070一小時0.18美金,不像vast.ai那麼漂亮,但尚可接受。從網頁介面看來,應該除了官方機器外,也有來自社區的機器才有辦法便宜。

RunPod也支援docker container。官方預設非常多的docker image,直接指定PyTorch就可以開箱即用。設定好ssh金鑰以後,就可以使用金鑰登入web terminal還有Jupyter。putty我始終連不到,好在web界面夠好用還支援複製貼上,我就使用web terminal加Jupyter,目前模型訓練已經完成了。

本座存了$10,應該會把它當成vast.ai不能用時的備胎。畢竟vast.ai價格還是漂亮點 XD

全文連結

星期二, 8月 01, 2023

尼爾:自動人形 Ver1.1a 第一集心得

 


今天看了第一集的 Nier動畫。遊戲本體在我Steam收藏庫躺非常久。從剛上 PC優化還很爛的時代,一路躺到 Sony修好了PC優化,不需要特殊外掛做優化,才被我認真拿來玩。不過我玩到第一個結局就結束了 XD 第二輪 9S 視角還沒有動力玩~

對於遊戲印象非常不錯,包括整個致鬱的背景和真相,3A 的畫面,更重要的是優美的音樂,音樂好到幾乎可以說才是本體,遊戲是買音樂送的。所以看到巴哈有動畫就來看一下 XD

作畫和音樂來說。遊戲和動畫作畫有顯著差別。動畫角色有點塑膠感,跟整個金屬風格的背景有點格格不入,反而是作為反派出場的歌利亞機器人,因為維持 3D 金屬外觀的關係,能夠維持 Boss氣場。音樂方面,動畫搬運了遊戲的音樂和CV,因此水準非常高。CV 表現可圈可點,2B 的外冷內熱、9S 的情感豐富和話癆都充分還原 XD

動畫的節奏控制就不習慣了。第一集開場到打歌利亞的過程,在遊戲裡面是高難重頭戲,要接連戰鬥約一小時才能見到第一個存檔點。玩遊戲的時候如果一周目就選 Hard 甚至不一定能活著看到Boss,本座當初搞不清楚狀況直接選 Hard 就躺了好幾輪。Boss 一言不合就揮巨大金屬手臂也是很有壓迫感。在動畫中,艱困的戰鬥被嚴重壓縮,變成敲幾下就解決對手,看了不習慣。

整體而言,作為喜歡遊戲的人。看到遊戲變成動畫,作為粉絲還是很感動。動畫也也重現了2B9S重要的活動和場面,例如第一集最後拿出 Black Box ○○。

第一話個人打分,應該是普通以上。如果哪天想起來可能會去看一下的程度。此打分必須參考本座大叔年紀做校正。上年紀後看動畫的慾望和時間大幅減少(難道說上了年紀就一定要玩結婚生小孩嗎QQ),跟部落格大學時代比起來更為明顯。本大叔打到這個分數應該算高了 XD

全文連結