本週16個Github有趣專案Korvus等

banq發表於2024-07-21

Interesting Projects, Tools and Libraries

以下是Rust語言的開源工具:
1、bitwhip
BitWHIP 是一個用 Rust 編寫的 CLI WebRTC 代理。這些是您現在可以用它做的一些事情。

  • 以 30 毫秒的延遲釋出您的桌面
  • 在本機播放器中播放流

BitWHIP 建立在開放協議之上,因此幾乎可以在任何地方使用。它還應該與您最喜歡的工具和庫(如 OBS、FFmpeg 或 GS​​treamer)互操作。

2、kaskade
Kaskade 是 Apache Kafka 的文字使用者介面 (TUI), 由Textualize使用[url=https://github.com/Textualize/textual]Textual[/url]構建。它包括以下功能:

  • 管理:
    • 列出主題、分割槽、組和組成員。
    • 主題資訊,例如滯後、副本和記錄數。
    • 建立、編輯和刪除主題。
    • 按名稱過濾主題。
  • 消費者:
    • Json、字串、整數、長整型、浮點型、布林型和雙精度型反序列化。
    • 按鍵、值、標題和/或分割槽進行過濾。
    • 使用 avro 支援 Schema Registry。
    • Protobuf 反序列化支援。

3、pratt-gen
Rust使用內聯宏的遞迴下降解析器生成器庫。

要解析 json 檔案,您可以編寫以下程式碼,並用來parse<Json>解析 json 格式的字串。

use pratt_gen::*;

#[derive(Clone, Copy, ParserImpl, Space)]
pub enum Json<'a> {
    #[parse("{0}")]
    Float(f64),
    #[parse("{0}")]
    Int(i64),
    #[parse("{0}")]
    Str(&'a str),
    #[parse("{{ {0} }}")]
    Obj(&'a Obj<'a>),
    #[parse("[ {0} ]")]
    Arr(&'a Arr<'a>),
    #[parse("null")]
    Null(),
    #[parse("{0}")]
    Bool(Bool),
}

#[derive(Clone, Copy, ParesrImpl, Space)]
pub enum Bool {
    #[parse("true")]
    True(),
    #[parse("false")]
    False(),
}

#[derive(Clone, Copy, ParserImpl, Space)]
pub enum Obj<'a> {
    #[parse("{0} : {1} , {2}")]
    Next(Ident<'a>, Json<'a>, &'a Obj<'a>),
    #[parse("{0} : {1}")]
    Just(Ident<'a>, Json<'a>),
    #[parse("")]
    Null(),
}

#[derive(Clone, Copy, ParserImpl, Space)]
pub enum Arr<'a> {
    #[parse("{0} , {1}")]
    Next(Json<'a>, &'a Arr<'a>),
    #[parse("{0}")]
    Just(Json<'a>),
    #[parse("")]
    Null(),
}


4、cake
Cake是一個基於Candle的Rust 框架,用於對 LLama3 等大型模型進行分散式推理。該專案的目標是透過將消費級硬體重新用於 iOS、Android、macOS、Linux 和 Windows 裝置的異構叢集來執行大型 (70B+) 模型,從而有效地利用計劃報廢作為使 AI 更易於訪問和民主化的工具。

其理念是將轉換器塊分片到多個裝置,以便能夠在通常無法裝入單個裝置的 GPU 記憶體的模型上執行推理。同一工作器上相鄰轉換器塊的推理會進行批處理,以最大限度地減少資料傳輸造成的延遲。

5、tui-rs-tree-widget
Ratatui Widget 的構建是為了顯示樹形資料結構。

6、bollard
Rust 中的 Docker 守護程序 API

Bollard 利用最新的Hyper和 Tokio改進來實現包含未來、流和 async/await 範例的非同步 API。

該庫透過命名管道提供 Windows 支援,並透過可選的 Rustls繫結提供 HTTPS 支援。透過 OpenAPI、protobuf 和上游文件生成用於與 Docker和Buildkit互動的序列化型別。


以下是大模型開源工具:
7、Korvus
Korvus 是一個搜尋 SDK,可將整個 RAG 管道統一到單個資料庫查詢中。Korvus 建立在 Postgres 之上,並繫結了 Python、JavaScript 和 Rust,可提供高效能、可自定義的搜尋功能,同時最大程度減少基礎設施問題。

Korvus 是專為 Postgres 構建的一體化開源 RAG(檢索增強生成)管道。它將 LLM、向量記憶體、嵌入生成、重新排序、摘要和自定義模型整合到單個查詢中,從而最大限度地提高效能並簡化搜尋架構。

Korvus 透過充分利用 Postgres 的強大功能來進行 RAG 操作而脫穎而出:

  1. Postgres-Native RAG:Korvus 利用 Postgres 的強大功能,讓您可以直接在資料庫中執行復雜的 RAG 操作。這種方法消除了對外部服務和 API 呼叫的需求,從而大大降低了延遲和複雜性。
  2. 單一查詢效率:藉助 Korvus,您的整個 RAG 管道(從嵌入生成到文字生成)都可在單一 SQL 查詢中執行。這種“單一查詢統領一切”方法可簡化您的架構並提高效能。
  3. 可擴充套件性和效能:透過構建在 Postgres 之上,Korvus 繼承了其出色的可擴充套件性和效能特徵。隨著資料的增長,Korvus 也會隨之增長,即使資料集很大,也能保持高效能。

主要特點

  • 簡化架構:用單一、強大的查詢取代複雜的面向服務的架構。
  • 高效能:消除 API 呼叫和資料移動,實現更快的處理速度和更高的可靠性。
  • 開源:使用在 Docker 中本地執行的開源軟體和模型來改善您的開發人員體驗。
  • 多語言支援:將 Korvus 與 Python、JavaScript 和 Rust 結合使用。開啟問題以投票支援其他語言。
  • 統一管道:在一個查詢中結合嵌入生成、向量搜尋、重新排名和文字生成。
  • Postgres 支援:在底層,Korvus 操作由久經考驗的資料庫平臺上的高效 SQL 查詢提供支援。

8、gpu.cpp
gpu.cpp 是一個輕量級庫,可以簡化使用 C++ 的行動式 GPU 計算。

它專注於通用的原生 GPU 計算,利用 WebGPU 規範作為可移植的低階 GPU 介面。這意味著我們可以在 C++ 專案中插入 GPU 程式碼,並使其在 Nvidia、Intel、AMD 和其他 GPU 上執行。相同的 C++ 程式碼可以在各種膝上型電腦、工作站、移動裝置或幾乎任何支援 Vulkan、Metal 或 DirectX 的硬體上執行。

我們希望透過 gpu.cpp 為個人開發者和研究人員提供一個高效庫,讓他們能夠將 GPU 計算整合到程式中,而只需依賴標準 C++ 編譯器作為工具即可。我們的目標是:

  • 高功率重量比 API:提供可覆蓋全部 GPU 計算需求的最小 API 表面積。
  • 快速編譯/執行週期:確保專案可以幾乎立即構建,在現代膝上型電腦上編譯/執行週期應該<5 秒。
  • 最小的依賴和工具開銷:標準的 clang C++ 編譯器就足夠了,除了 WebGPU 本機實現之外沒有外部庫依賴。


以下是其他開源工具:
9、Mazeppa
用於按值呼叫函式式語言的現代超級編譯器

超級編譯是一種程式轉換技術,它以符號方式評估給定程式,執行時值為未知數。在此過程中,它發現原始程式的執行模式並將其合成為獨立函式;超級編譯的結果是一個更高效的殘差程式。在轉換能力方面,超級編譯同時包含了森林砍伐2和部分評估3,甚至還表現出一定的定理證明能力。

Mazeppa是一款現代超級編譯器,旨在成為按值呼叫函式式語言的編譯目標。與之前的超級編譯器不同,Mazeppa 1) 提供全套原始資料型別,2) 支援手動控制函式展開,3) 在轉換過程中做出的決策完全透明,4) 從一開始就以效率為設計理念。

10、magic-cli
Magic CLI 是一個命令列實用程式,它使用 LLM 幫助您更有效地使用命令列,其靈感來自Amazon Q(以前的 Fig 終端)GitHub Copilot for CLI等專案。


11、Toit
Toit 是一種專為微控制器設計的現代高階語言
Toit 針對微控制器上的實時重新載入進行了最佳化。您的程式碼在編寫時會逐步執行,並且您會獲得即時反饋。兩秒鐘內即可透過本地 WiFi推送更改,並保留 USB 電纜為手機充電。您可以快速迭代、快速學習並構建更好的產品。

12、Drag-and-Drop-Email-Designer
拖放式 HTML 電子郵件設計器 - 真正免費且開源。

為什麼選擇 SENDUNE 電子郵件設計師?

  • 真正的開源:可以將其用於個人用途或商業用途或其他用途。
  • 真正免費:因為那些聲稱“免費”的東西其實不是免費的。
  • 確實有效:因為免費的那些似乎不起作用。
  • 真正的 HTML:沒有像 mjml 這樣的中間程式碼管理員。
  • 真正快速且輕便:因為您可以利用時間做更好的事情。
  • 真正無程式碼:像專業人士一樣進行設計,無需擔心編碼問題。我們的極簡介面讓您無後顧之憂。
  • 真正民主:將 HTML 輸出儲存為模板並與任何電子郵件服務提供商一起使用。

提供三種模板型別,讓您可以設計任何型別的交易或營銷電子郵件。總之,您可以建立和儲存無限數量的模板。

  • 拖放設計器- 立即開始設計漂亮的電子郵件。
  • HTML 程式碼編輯器- 重複使用您已有的 HTML 模板或從頭開始編寫程式碼。
  • 純文字電子郵件- “極簡主義者”。這是為您準備的。

以下是Python開源:
13、exo
使用日常裝置在家中執行自己的 AI 叢集

忘記昂貴的 NVIDIA GPU,將您現有的裝置統一為一個強大的 GPU:iPhone、iPad、Android、Mac、Linux,幾乎任何裝置!

廣泛的模型支援

  • exo 支援 LLaMA(MLX和tinygrad)和其他流行模型。

動態模型分割槽

  • exo根據當前網路拓撲和可用裝置資源對模型進行最佳分割。這使您能夠執行比在任何單個裝置上都能夠執行的更大的模型。

自動裝置發現

  • exo 將使用最佳可用方法自動發現其他裝置。無需手動配置。

ChatGPT 相容 API

  • exo 提供了與 ChatGPT 相容的 API來執行模型。只需在您的應用程式中進行一行更改,即可使用 exo 在您自己的硬體上執行模型。

裝置平等

  • 與其他分散式推理框架不同,exo 不使用主從架構。相反,exo 裝置採用 p2p 連線。只要裝置連線到網路中的某個位置,就可以使用它來執行模型。

Exo 支援不同的分割槽策略,以跨裝置分割模型。預設分割槽策略是環記憶體加權分割槽。這會在環中執行推理,其中每個裝置執行的模型層數與裝置的記憶體成比例。

14、MobileLLM
MobileLLM 針對裝置用例最佳化十億分之一引數語言模型。在 ICML 2024 中。

該儲存庫包含我們在工作中引入的 MobileLLM 的訓練程式碼:“ MobileLLM:針對裝置用例最佳化十億分引數語言模型”,發表於 ICML 2024。
在這項工作中,我們全面考慮了多個設計因素,以獲得具有少於十億個引數的高質量 LLM。我們整合了 (1) SwiGLU 啟用函式、(2) 深度和薄架構、(3) 嵌入共享、(4) 分組查詢注意來構建 MobileLLM。MobileLLM-125M/350M 在零樣本常識推理任務上比之前的 125M/350M SoTA 模型實現了 2.7%/4.3% 的準確率提升。在我們的更新版本中,我們進一步證明我們的設計理念可以有效擴充套件到更大的模型,MobileLLM-600M/1B/1.5B 的 SoTA 結果。

15、vectorlite
適用於 SQLite 的快速且可調的向量搜尋擴充套件
Vectorlite 是SQLite 的執行時可載入擴充套件,它基於hnswlib實現快速向量搜尋,並可在 Windows、MacOS 和 Linux 上執行。

有關該專案的動機和背景,請檢視此處

Vectorlite 速度很快,與sqlite-vss相比,vectorlite 插入向量速度快 10 倍,搜尋速度快 2-40 倍(取決於 HNSW 引數,需要權衡速度和準確率),如果設定了合適的 HNSW 引數,召回率會更高。


16、AI Dialer
一個全棧應用程式,用於可中斷、低延遲和接近人類質量的 AI 電話呼叫,由拼接 LLM、語音理解工具、文字到語音模型和 Twilio 的電話 API 構建。

以下元件已以流式方式實現和整合在一起,以實現低延遲和可中斷的AI 呼叫任務:

  • ☎️ 電話服務:透過虛擬電話號碼(Twilio)撥打和接聽電話
  • ️ 語音轉文字服務:將呼叫者的語音轉換為文字(以便可以傳遞給 LLM),並理解語音模式,例如使用者何時結束講話以及中斷情況,以促進可中斷性(Deepgram)
  • 文字到文字的 LLM:理解電話交談,可以進行“功能呼叫”,並引導交談完成透過“系統”訊息指定的特定任務(OpenAI GPT-o 或 Anthropic Claude Sonnet 3.5)
  • 文字轉語音服務:將 LLM 響應轉換為高質量語音
  • ⚙️ Web 伺服器:基於 FastAPI 的 Web 伺服器,提供以下端點:
    • 使用 Twilio 的標記語言 (Twilio ML) 接聽電話,
    • 透過每次呼叫的 WebSocket 啟用與 Twilio 之間的音訊流
    • 與基本 Steamlit 網頁使用者介面互動
  • 前端 UI:簡單的 Streamlit 前端,可在瀏覽器中檢視發起/結束呼叫並實時檢視呼叫進度


 

相關文章