• ,

    Steve Comparison of LLMs

    About the author 這篇文章是由我的實習生Steve Wang所撰寫 More about Steve Wang: https://renickbell.net/students/steve-wang/doku.php?id=start Introduction Here the author performs a comparison of different LLM AI models. The goal is to find the best LLM that can understand and reply in Traditional Chinese. A requirement…

    Continue Reading…: Steve Comparison of LLMs

  • ,

    了解LLM的函數調用function calling

    什麼是Function calling 官方介紹文檔:https://platform.openai.com/docs/actions/introduction 中文介紹文檔:https://openai.xiniushu.com/docs/plugins/getting-started Function calling是一種技術,允許LLM根據對話內容自主選擇並調用預定義的函數。這些函數可以用來執行各種任務,例如查詢實時數據、執行計算、生成圖像等。函數調用是建立 LLM 驅動的聊天機器人或代理(agents)的重要能力,這些聊天機器人或代理需要檢索 LLM 的上下文或通過將自然語言轉換為 API 調用來與外部工具互動。 功能調用使開發者能夠創建: Function Calling可以做到那些事情 如何實現function calling 假如我們現在想要詢問某個地點的天氣,一般的LLM無法做到這件事情,因為訓練的數據集不會包括現在的即時數據。解決這個問題的方法是將LLM與外部工具結合。利用模型的Function Calling能力來確定要調用的外部函數及其參數,然後讓它返回最終的回應。 假設一位用戶向模型提出以下問題: 台北市今天的天氣如何 要實現function calling,需要在LLM的接口中註冊函數,並將這些函數的描述和使用說明一同發送給模型。模型會根據上下文智能地選擇並調用適當的函數。以下是一個簡單的實現示例: 這個範例會使用一個公共API:Weather.gov,要獲取預報,有兩個步驟: 首先,ChatGPT 會使用頂部的 info(特別是描述)來判斷此操作是否與用戶查詢相關。接著定義API的接口和每個接口的功能。 然後,下面的 參數 進一步定義了架構的每個部分。例如,我們正在告訴 ChatGPT,辦公室 參數指的是天氣預報辦公室 (WFO)。 OpenAI很貼心的為我們提供了一個邦我們撰寫此Yaml的機器人 https://chatgpt.com/g/g-TYEliDU6A-actionsgpt 使用方法如下: 在測試API的時候,可以使用Postman來測試上面的OpenAPI架構。Postman 註冊是免費的,錯誤處理詳盡,並且在身份驗證選項上非常全面。它甚至還提供直接導入 Open API 架構的選項(見下文)。 如果要進行身分驗證,可參考以下文章 https://platform.openai.com/docs/actions/authentication

    Continue Reading…: 了解LLM的函數調用function calling

  • ,

    CentOS無法連接mirror.centos.org

    參考問答: https://serverfault.com/questions/1161816/mirrorlist-centos-org-no-longer-resolve 當我們在CentOS8安裝一些新的套件的時候,常常會出現這樣的錯誤 Error: Failed to download metadata for repo ‘extras’: Cannot prepare internal mirrorlist: Curl error (6): Couldn’t resolve host name for http://mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=extras&infra=stock 這個錯誤的重點在於沒辦法解析mirrorlist.centos.org 可使用ping -c 4 mirrorlist.centos.org來確認無法連接這個位置 這是因為mirrorlist.centos.org 不再存在 可以使用下面的指令更新mirror.centos.org為新的函式庫位置vault.centos.org

    Continue Reading…: CentOS無法連接mirror.centos.org

  • ,

    在本機執行Breeze-7B-Instruct-v1_0

    甚麼是Breeze-7B-Instruct-v1_0 huggingface頁面:https://huggingface.co/MediaTek-Research/Breeze-7B-Instruct-v1_0 線上DEMO: https://huggingface.co/spaces/MediaTek-Research/Demo-MR-Breeze-7B 聯發科的Breeze系列有好幾種不同的模型,在使用的時候要注意其微調順序 首先就是Breeze-7B-Base 是 Breeze-7B 系列的基礎模型。而Breeze-7B-Instruct 源自基礎模型 Breeze-7B-Base,使得最終模型可以直接用於常見任務。 Ollama library上的breeze模型總是使用簡體中文回答 我有嘗試使用Ollama在Library上面尋找別人訓練好的Library,但不太確定為什麼總是回答簡體中文,而無法好好使用繁體中文回應 https://ollama.com/search?q=breeze 我有嘗試過markliou/breeze-7b、ycchen/breeze-7b-instruct-v1_0、jcai/breeze-7b-32k-instruct-v1_0 其中markliou/breeze-7b是回繁體中文沒錯但總是沒在理我問什麼,而剩的都用簡體中文 後來發現是問的問題的關係,以jcai/breeze-7b-instruct-v1_0為例,如果問的問題是台灣專屬的,那麼就會以繁體中文回覆,畢竟原本是以Mistral-7B-v0.1為基礎,如果後面的微調沒有微調到的資料,就仍會有簡體中文的出現,如果詢問台北有哪些地方好玩,則會都使用繁體中文 自己將Hugging Face上的檔案匯入Ollama 所以我嘗試使用下面的Makefile,並將https://huggingface.co/MediaTek-Research/Breeze-7B-Base-v1_0的檔案放置至同資料夾內 然後用 中間有出了一些錯誤 panic: runtime error: index out of range [1] with length 1 這代表你的.safetensors 檔案的格式或內容不符合 ollama 轉換的要求。請檢查你所使用的 .safetensors 檔案是否與基礎模型匹配。例如我就是因為原本是使用Breeze-7B-Instruct,而基礎模型卻直接使用mistral:v0.1 Breeze-7B-Base-v1_0微調自:mistralai/Mistral-7B-v0.1 Breeze-7B-Instruct-v1_0 微調自:MediaTek-Research/Breeze-7B-Base-v1_0…

    Continue Reading…: 在本機執行Breeze-7B-Instruct-v1_0

  • ,

    在Ollama中載入自己建立的模型

    參考資料 官方教學:https://github.com/ollama/ollama/blob/main/docs/import.md 網路教學:https://www.youtube.com/watch?v=fnvZJU5Fj3Q 基於已有的模型導入 Safetensors 權重 首先就是建立一個Modelfile.txt 例如假如我是用https://ollama.com/markliou/breeze-7b這個做為基礎模型,然後自己建立的LORA微調檔案在data資料夾底下, 則Modelfile.txt的內容如下: 現在從創建 Modelfile 的目錄運行 ollama create,可以使用-f來指定Modelfile路徑,如果不指定就會在你cmd當前資料夾尋找: 可以使用參數 –quantize來運行不同的量化級別 如果你是下載別人的LoRA,而別人的LoRA用的是.bin檔案,則可以使用transformers庫來做轉換,轉成.safetensors 直接導入GGUF的模型 Ollama的From所導入的模型應為GGUF格式,可以透過像 llama.cpp 這樣的工具來將模型轉換為 ggml 或 gguf 格式。 安裝llama.cpp 接著將下載的 .safetensors 模型放置於適當位置,然後開始轉換 注意!不同模型的結構和參數可能有所差異,並非所有模型都能順利轉換為 GGUF。這邊有失敗經驗 https://github.com/ollama/ollama/issues/5195 要導入 GGUF 模型,創建一個Modelfile,包含: 接著就可以創建了,CMD需指向你Modelfile.txt的位置

    Continue Reading…: 在Ollama中載入自己建立的模型

  • ,

    專門為繁體中文優化過的開源模型

    聯發科的Breeze-7B 模型介紹 HuggingFace網址: https://huggingface.co/MediaTek-Research/Breeze-7B-Instruct-v1_0 DEMO網址: https://huggingface.co/spaces/MediaTek-Research/Demo-MR-Breeze-7B 聯發科的Breeze-7B模型是一個專為繁體中文和英文雙語環境設計的大型語言模型。由聯發科研究團隊開發的一個開源大型語言模型,基於Mistral-7B進行改進和優化。該模型擁有70億個參數,專門針對繁體中文和英文的語言處理進行了優化。 Breeze-7B主要特點 模型比較 模型名稱 參數量 開發者 授權 功能調用 指令跟隨 Breeze-7B-Instruct-v1_0 7B MediaTek Research Apache 2.0 ❌ ✅ Breeze-7B-FC-v1_0 7B MediaTek Research Apache 2.0 ✅ ✅ 功能調用意味著它可以調用外部功能或API BLOOM-zh 官方頁面:https://huggingface.co/ckip-joint/bloom-1b1-zh iKala優化版本:https://huggingface.co/ikala/bloom-zh-3b-chat BLOOM-zh 是由聯發科(MediaTek)基於 BigScience 的 BLOOM…

    Continue Reading…: 專門為繁體中文優化過的開源模型

  • MSE(Media Source Extensions)介紹

    什麼是MSE? 媒體源擴展(Media Source Extensions, MSE)是一項由W3C制定的網頁API標準,旨在通過JavaScript動態生成和控制媒體流,從而實現無插件且基於Web的流媒體播放功能。MSE允許開發者將媒體數據源附加到HTMLMediaElement(如<audio>和<video>標籤),並動態地為這些元素構建媒體源 MSE的主要功能 MSE的應用場景 MSE的優勢 如何使用MSE 1. 確認瀏覽器支援度,可以使用以下JavaScript進行檢查: 2. 創建MediaSource對象 創建一個MediaSource對象並將其附加到<video>元素上: 3. 處理sourceopen事件 4. 獲取和附加媒體片段 使用fetch API或其他方法來獲取媒體片段,並將其附加到SourceBuffer中: 5. 處理緩衝更新 MSE的瀏覽器支持度 請見此:https://caniuse.com/mediasource 一直以來有低延遲需求的高分發直播需求都會很困擾iPhone對MSE的不支援 但是好消息!!! Safari 17.1 brings the new Managed Media Source API to iPhone https://www.radiantmediaplayer.com/blog/at-last-safari-17.1-now-brings-the-new-managed-media-source-api-to-iphone.html 蘋果公司的 Safari 17.1…

    Continue Reading…: MSE(Media Source Extensions)介紹

  • WebRTC 點對點特性帶來的複雜性

    什麼是WebRTC WebRTC(Web Real-Time Communication)是一種開源技術,允許瀏覽器和移動應用程序進行音頻、視頻和數據的實時通信。它能夠在瀏覽器內直接進行音頻和視頻通話,無需安裝任何插件或額外的軟件,這大大簡化了用戶的操作。支持多種平台,包括Web、Android、iOS、Windows、MacOS和Linux。其非常的低延遲,這對於需要即時反應的應用場景(如視頻會議、在線遊戲等)非常重要。 WebRTC的關鍵技術 參考資料:https://webrtc.github.io/webrtc-org/architecture/ WebRTC 的架構分為兩個主要層次,一層是針對瀏覽器開發者的 WebRTC C++ API,另一層是針對網絡應用開發者的 Web API。 WebRTC 支援的音訊與影像引擎具備多種功能,包括各種音訊編解碼器(如 iSAC、iLBC、Opus)、回音消除(AEC)、降噪(NR)、影像編解碼器(如 VP8)、影像抖動緩衝(Video Jitter Buffer)以及畫面增強等。除此之外,WebRTC 的傳輸與會話層包含 RTP 網路層、STUN/ICE 用於網路連線建立,以及抽象的會話管理層,讓應用開發者可自行選擇協議實作方式。 技術目標與限制 WebRTC 的目標是打造一個強大的端對端即時通訊平台,讓開發者能創建豐富的即時多媒體應用,並能夠在不同的網頁瀏覽器及平台上執行。 WebRTC 是一種支持瀏覽器間進行實時音視頻通信的技術,利用點對點(P2P)的 UDP 傳輸來實現低延遲的數據流傳輸。然而,由於網絡環境中的 NAT(Network Address Translation)和防火牆的存在,直接的 P2P 連接可能會受到限制。因此,WebRTC 使用了 ICE 框架來解決 NAT 穿透問題。…

    Continue Reading…: WebRTC 點對點特性帶來的複雜性

  • ,

    介紹 OpenAI o1-preview

    官網介紹o1-preview 介紹 OpenAI o1-preview:https://openai.com/index/introducing-openai-o1-preview 首次瞭解:探索 GitHub Copilot 中的 OpenAI o1:https://github.blog/news-insights/product-news/openai-o1-in-github-copilot/ 在2024/9/12,OpenAI推出了o1-preview的模型,這個模型的最大特色就是具備有先進推理能力,可解決難題。測試顯示o1-preview在程式碼分析和優化方面效果良好。該模型能思考挑戰並能夠將複雜任務分解為步驟,這可以優化程式碼以解決性能問題,加速開發工作流程。 透過這樣的思考流程,ChatGPT可以完成更複雜的程式撰寫任務,過去,我們仍會需要透過人的思考將任務拆細後一步一步請ChatGPT幫忙完成,再由工程師將任務功能組合起來,而現在o1-preview則自己就能夠具備有將複雜任務拆細的能力。 從下圖可看見,ChatGPT的程式撰寫能力瞬間從11分進步到89分(圖片來源: https://openai.com/index/learning-to-reason-with-llms/) o1-preview 模型的新功能總覽 隨著 o1-preview 模型的推出,這個模型在性能、功能和未來更新方向上展現了許多新亮點。 o1-preview 模型功能實測 先說結論,真的非常的強,不論是產生程式、理解程式、修改程式,都和過去是完全不同等級的狀況!非常的厲害。 這是我今天使用o1-preview 來製作一個HTML的俄羅斯方塊的對話紀錄,可以看到ChatGPT完美的完成任務,真的是沒有BUG的完整的遊戲,而且修改的動作也都非常的完美,真的可以靠指令達到我的許多要求。我覺得這樣的程度的模型是真的會影響到許多工程師的未來性。 對話紀錄在此:https://chatgpt.com/share/66e6bcf1-4254-8005-a573-a250e1b51702 我們可以看見現在的o1-preview會有著更多細緻的思考流程,為我們將一個很大的指令拆分成許多個步驟,並重新檢視、整個整個程式碼,接著則是設置遊戲的玩法。 接著我請他增加計分板和顯示下一個方塊的功能也完美達成 請他幫忙調整版面也非常完美的完成功能 這個是成果:https://claire-chang.com/wp-content/uploads/2024/09/test.html 操作說明:

    Continue Reading…: 介紹 OpenAI o1-preview

  • 利用emscripten來編譯WebAssembly 

    WebAssembly 是甚麼 WebAssembly(Wasm)是一種二進制格式的指令集,用於在網頁瀏覽器中高效地執行程式碼。它由 W3C 標準組織制定,目的是提供一種高性能、跨平台的執行環境,讓開發者可以在網頁上運行接近原生效能的應用程式,尤其是使用 C、C++、Rust 等語言編寫的程式碼。 以下是 WebAssembly 的主要特點: WebAssembly 是一種讓網頁能夠運行接近原生應用效能的技術,特別適合對性能要求較高的應用,同時保持了跨平台的便利性。 WebAssembly 的應用場景 使用Emscripten將C專案編譯為WebAssembly Emscripten 是一個開源編譯器工具,可以將用 C 和 C++ 編寫的程式碼編譯成 WebAssembly(.wasm)或 JavaScript,使這些程式能夠在瀏覽器中運行。它的主要目的是讓開發者能夠將桌面應用程式、遊戲或其他基於 C/C++ 的軟體移植到網頁環境中。 具體來說,Emscripten 的功能有以下幾個重點: Emscripten安裝流程 下載檔案 https://github.com/msys2/msys2-installer/releases/download/2024-01-13/msys2-x86_64-20240113.exe 開啟模擬器 開啟ucrt64.exe 安裝所需套件 安裝Emscripten 測試 安裝libde265.js ———->引用 gcc 或 g++ 的行。對於…

    Continue Reading…: 利用emscripten來編譯WebAssembly 


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。