[Python] @contextmanager 裝飾器的使用方式
Python 中的上下文管理器裝飾器 @contextmanager
是 contextlib
模組中的一個裝飾器,可以讓開發人員簡便地創造屬於我們的上下文管理器(Context Manager)。
Python 中的上下文管理器裝飾器 @contextmanager
是 contextlib
模組中的一個裝飾器,可以讓開發人員簡便地創造屬於我們的上下文管理器(Context Manager)。
最近把不少 Outlines 的應用整合進了我當前工作流程中,其中我最常與 vLLM 一起使用的,不過其說明文件不知為何在 vLLM GitHub 上一直沒被 merge,所以我在設計流程時不得不一直拿一個被 rejected 的 PR 原始碼在看說明 XD
Read More »vLLM 加速推理框架中使用整合之 Outlines 工具進行解碼約束本篇為一簡單 Python 實作,用於測試有限狀態機(Finite-State Machine)約束大型語言模型(Large Language Model)解碼出特定格式的回答,也權當作是理解 Outlines 工具的理念。當然,我實作的部份跟 Outlines 工具相比,實在顯得太過簡易。
Read More »使用有限狀態機約束大型語言模型解碼之實作在將大型語言模型(Large Language Model, LLM)應用於實際場景時,經常不僅僅是讓模型自由發揮、任意生成文句 —— 我們也可能會希望模型返回特定的結構,比方說做選擇題、或是給一個評分。在這樣的情況下,transformers 架構的模型可以直接使用 outlines 這個工具。
Read More »使用 Outlines 工具結構化模型的輸出現在 LLM 的服務已經涵蓋了各式各樣的領域,而提示注入(Prompt Injection)和越獄(Jailbreak)對 LLM 的威脅也是與日俱增,幾個月前甚至有客服 LLM 給了客戶錯誤的資訊導致權益受損呢(雖然那不是 Prompt 攻擊造成的)。
而 Microsoft 所開源的 BIPIA(Benchmarking and Defending Against Indirect Prompt Injection Attacks on Large Language Models)評估方法,雖然已經是半年前的測試了,到現在也沒什麼大更新,但是應用在我手邊的任務中,仍不失為一個方便簡潔的測試方法。
Read More »使用 Microsoft BIPIA 框架評估 LLM 防禦能力difflib
是 Python 標準函式庫中的一個模組,用於比較序列之間的差異(通常為文字)。早些年我在做碩論時還自己實現,直到現在工作了才發現有這麼簡潔的函式庫,煞是哭笑不得。
在 Python 的類別建構中,@property
是一種經常見到且確實有其好處的裝飾器,它主要的用途在於將類別的方法(class method)轉為只讀(read-only)的屬性(attribute),讓使用者透過屬性呼叫的方式來取得計算結果。
牛頓內插法是一種多項式的插值方法,使用多筆數據建構一組多項式函數,其優點在於隨著資料的添加,牛頓內插法不需要從頭開始計算,而是可以基於現有的函數進行擴展。
Read More »牛頓插值多項式(Newton Polynomial)時至今日有許多的 AI 應用、開源專案是以 HuggingFace 開源的 transformers 套件為基底下去開發的,有許多的模型與套件也都是寫成兼容 transformers 的格式、甚至擁有一樣的函式跟方法,才更容易為人所接受。
在這樣的前提下,我偶然使用了一個開源的訓練框架,它很好地封裝了 Transformer 架構的自動讀取 —— 但一個不得不解決的問題是我希望使用我自定義的模型去做實驗;我嘗試了幾個解決方法,目的是希望使用 AutoModel.from_pretrained()
的時候,只要傳入我本地端的模型路徑,就可以正確使用我自定義的模型架構,於是就把成功的方法紀錄於本篇筆記中。
最近開始嘗試使用 Flutter 來實作桌面的應用程式,由於我是使用 Linux 的 Gnome 桌面,其預設的系統視窗欄(最上面的橫條)是純黑的,與我開發的 APP 其輕鬆活潑的調性不符合,所以這才找了個不錯的套件工具:bitsdojo_window。
Read More »[Flutter] 使用 bitsdojo_window 來自訂客製化視窗標題欄