2022年4月25日 星期一

org mode 中利用 org babel 畫出 mermaid.js 的 uml 圖

 mermaid 其實跟 graphviz 有點像,最開始是拿來在網頁上畫流程圖的 javascript 函式庫

搭配上 org mode 之後,也可以在 babel 區塊中置入程式來畫圖

剛好趕上 emacs 28.1 的更新,svg 圖檔的品質可以說是大幅提升,非常賞心悅目



2022年4月24日 星期日

emacs 28.1 發佈!! 帶來多項性能提升

下載點在 http://ftp.wayne.edu/gnu/emacs/windows/emacs-28/

另外發現了設定內嵌圖片尺寸設定功能,不知為何之前都沒注意到呢



2022年4月5日 星期二

攻克 jupyter notebook 人機互動痛點 -- Gradio 初探

有寫過 *.ipynb 或 colab 就知道,要做一些人機介面是非常麻煩的,常常都要涉及網頁伺服器的撰寫。 Gradio 的出現簡化了這個部分,它提供 Interface 類別提供網頁中 form 元件的功能。使用在 machine learning 上只是其中的一個應用;不過開始團隊是特別強調了這個部分沒錯,主要體現在了與 Hugging Face Spaces無縫整合上。

  1. 安裝和使用說明,如同一般套件,專案原始碼放在 github
  2. 官網有一些簡單的範例
  3. kknews 上的中文說明
  4. 蔡炎龍老師的 用_Gradio2_快速打造_NLP_WebApp




2022年4月2日 星期六

GPT2-Chinese 初探:生成金庸風格小說

 參 使用GPT2-Chinese生成中文小說 一文,針對一些版本造成的問題進行修正

1. 抓取訓練文章程式 在執行時要先 unmark 掉最後四行,再 mark起來

2.  transformers 版本因為已經裝了最新版,因此 train.py 做如下修正



In-context learning 初探:以高血鉀症 hyperkalemia 為例

 之前新聞常提到的 talktotransformer.com 似乎下架了,網域被 inferkit 買下。以 the steps to treat hyperkalemia are listed below. 為提示,出現了以下的文字接龍:

例1

例2 
文字是流暢的,但邏輯仍然不正確。

2022年3月27日 星期日

cifar-10圖片分類任務初體驗--使用 pytorch lightning

CIFAR-10(https://www.cs.toronto.edu/~kriz/ cifar.html) 是由 60000 個屬於 10 個分類的 RGB 影像(32×32)組成的(飛機、汽車、鳥、貓、鹿、 ...)。使用pytorch lightning 的 官網教學,可以輕易在一個筆記本中試玩 三個模型: GoogleNet/Inception (winner of ILSVRC 2014), ResNet (winner of ILSVRC 2015), and DenseNet (best paper award CVPR 2017)。

有趣的是,我在測試其它的資料時,也發現了 SGD 優於 ADAM 的情況。遇到時反正就兩個都試試吧~~



2022年3月21日 星期一

PyTorch Lightning 初探--高度抽象化的機器學習架構

pytorch  的程式碼已經相當簡潔了,但是面對海量的架構,還有沒有更更更更簡化的可能呢? 有的, PyTorch Lightning 就是你要的。 假日硬啃了一遍,真是被網路上一些過時的教程害死。接下來就是浪費了一個週末得到的血淚心得XD

  1. 你的聖經就是 HOW TO ORGANIZE PYTORCH INTO LIGHTNING ,因為版本迭代實在太快,大概半年就翻了一翻,千萬不要,再次強調,千萬不要看半年之前其它神人的神文。神人再神,也沒時間去更新這些教程:)
  2. 安裝套件的最新穩定版本。 anaconda  的管理程式不知為何建議了一個非常舊的版本,加倍了我除錯的工作,令人印象深刻。
  3. 你會想用  tensorboard 的
    from pytorch_lightning.loggers import TensorBoardLogger
    logger = TensorBoardLogger("tb_logs", name="my_model")
    trainer = Trainer(logger=logger)
  4. 你會想限制 epoch 次數/時間的
    trainer = Trainer(max_time="00:12:00:00", max_epochs=10)
  5. 請在 LightningModule 乖乖的實作 train_dataloader 等函式,那是讓程式決定 batch size 等參數的途徑。不要沿用原來的載入方式
  6. training, validation, predict 是主要的需實作函式, test 不是;不少 pytorch 的 test 其實指涉到 lightning 的 predict ,請格外注意;會實作 training, validation, test 的可能偏向 nlp 的 transformer based language model
  7. lightning 本身沒有辦法推進準確率或降低 loss,有時間我會建議試試 Optuna