為了保護客戶隱私,使用Ruby在本地運行開源AI模型

王林
發布: 2024-03-18 21:40:03
轉載
515 人瀏覽過

譯者| 陳峻

#審校| 重樓

#最近,我們實作了一個客製化的人工智慧(AI)專案。鑑於甲方持有非常敏感的客戶訊息,為了安全起見,我們不能將它們傳遞給OpenAI或其他專有模型。因此,我們在AWS虛擬機器中下載並運行了一個開源的AI模型,使其完全處於我們的控制之下。同時,Rails應用程式可以在安全的環境中,對AI進行API呼叫。當然,如果不必考慮安全性問題,我們更傾向於直接與OpenAI合作。

為了保護客戶隱私,使用Ruby在本地運行開源AI模型

下面,我將和大家分享如何在本地下載開源的AI模型,讓它運行起來,以及如何針對其執行Ruby腳本。

為什麼要自訂?

這個專案的動機很簡單:資料安全。在處理敏感的客戶資訊時,最可靠的做法通常是在公司內部進行。因此,我們需要客製化的AI模型,在提供更高等級的安全控制和隱私保護方面發揮作用。

開源模式

#在過去的6個月裡,市場上出現了諸如:MistralMixtralLama等大量開源的AI模型。雖然它們沒有GPT-4那麼強大,但是其中不少模型的性能已經超過了GPT-3.5#,而且隨著時間的推移,它們會越來越強。當然,該選用哪種模型,則完全取決於您的處理能力和需要實現的目標。

由於我們將在本地運行AI模型,因此選擇了大小約為4GB Mistral。它在大多數指標上都優於GPT-3.5。儘管Mixtral的效能優於Mistral,但它是一個龐大的模型,至少需要48GB記憶體才能運作。

參數

#在談論大語言模型(LLM )時,我們往往會考慮提到它們的參數大小。在此,我們將在本地運行的Mistral模型是一個70億參數的模型(當然,Mixtral700億個參數,而GPT-3.5大約有

## 1750

億個參數)。 為了保護客戶隱私,使用Ruby在本地運行開源AI模型

通常,大型語言模型使用基於神經網路的技術。神經網路是由神經元組成的,每個神經元與下一層的所有其他神經元相連。

############################如上所示,每個連線都有一個權重,通常用百分比表示。每個神經元還有一個偏差(bias),當資料通過某個節點時,偏差會對資料進行修正。 ############

神經網路的目的是要「學到」一種先進的演算法、一種模式匹配的演算法。透過在大量文本中接受訓練,它將逐漸學會預測文本模式的能力,進而對我們給予的提示做出有意義的回應。簡單而言,參數就是模型中權重和偏差的數量。它可以讓我們了解神經網路中有多少個神經元。例如,對於一個70億參數的模型來說,大約有#100#層,每層都有數千個神經元。

在本機運行模型

#要在本機上執行開源模型,首先必須下載相關應用。雖然市面上有許多選擇,但我發現最簡單,也便於在英特爾Mac#上運行的是Ollama

雖然Ollama目前只能在Mac#和Linux上運行,不過它未來還能運行在Windows上。當然,您可以在Windows上使用WSL(Windows Subsystem for Linux)來執行Linux shell

Ollama不但允許您下載並運行各種開源模型,而且會在本地端口上打開模型,讓您能夠通過Ruby程式碼進行API呼叫。這便方便了Ruby開發者編寫能夠與本機模型整合的Ruby應用程式。

取得Ollama

#由於Ollama主要基於命令列,因此在MacLinux系統上安裝Ollama非常簡單。您只需透過連結https://www.php.cn/link/04c7f37f2420f0532d7f0e062ff2d5b5下載Ollama,花#5##分鐘左右時間安裝軟體包,再運行模型即可。

為了保護客戶隱私,使用Ruby在本地運行開源AI模型

#安裝首個模型

#在設定並執行Ollama之後,您將在瀏覽器的工作列中看到Ollama圖示。這意味著它正在後台運行,並可運行您的模型。為了下載模型,您可以打開終端機並執行以下命令:

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
#ollama run mistral
###

由於Mistral約有4GB大小,因此您需要花一段時間完成下載。下載完成後,它將自動開啟Ollama提示符,以便您與Mistral#互動和通訊。

為了保護客戶隱私,使用Ruby在本地運行開源AI模型

下一次您再透過Ollama執行mistral時,便可直接運行對應的模型了。

自訂模型

#類似我們在OpenAI##在#中建立自訂的GPT,透過Ollama,您可以對基礎模型進行自訂。在此,我們可以簡單地建立一個自訂的模型。更多詳細案例,請參考Ollama的線上文件。

首先,您可以建立一個Modelfile(模型檔案),並在其中加入以下文字:

##FROM mistral# Set the temperature set the randomness or creativity of the responsePARAMETER temperature 0.3# Set the system messageSYSTEM ”””You are an excerpt Ruby developer. You will be asked Program Program. explanation along with code examples.”””
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
上面出現的系統訊息是AI模型做出特定反應的基礎。

接著,您可以在終端機上執行以下命令,以建立新的模型:

ollama create -f './Modelfile
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
在我們的專案案例中,我將此模型命名為

#Ruby

ollama create ruby​​ -f './Modelfile'
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
同時,您可以使用以下命令羅列顯示自己的現有模型:

ollama list
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

至此您可以用如下指令執行自訂的模型了:為了保護客戶隱私,使用Ruby在本地運行開源AI模型

Ollama run ruby​​
#<h4>
<span>與Ruby整合</span><span></span>
</h4><p><span>雖然Ollama尚沒有專用的</span><span>gem</span><span>,但</span><span>Ruby</span><span>開發人員可以使用基本的</span><span>HTTP</span><span>#請求方法與模型互動。在背景運行的Ollama可以透過</span><span>11434</span><span>連接埠開啟模型,因此您可以透過「</span><span><a href="https://www.php.cn/link/dcd3f83c96576c0fd437286a1ff6f1f0" rel="nofollow" target="_blank">https://www.php.cn/link/ dcd3f83c96576c0fd437286a1ff6f1f0</a></span><span>」存取它。此外,Ollama</span><span>API</span><span>的文件也為聊天對話和建立嵌入等基本指令提供了不同的端點。 </span><span></span></p><p><span>在本專案案例中,我們希望使用</span><span>/api/chat</span><span>端點向AI模型發送提示。下圖展示了一些與模型互動的基本</span><span>Ruby</span><span>程式碼:</span><span></span></p><p style="text-align:center;"><img src="https://img.php.cn/upload/article/000/465/014/171076920967027.png" alt="為了保護客戶隱私,使用Ruby在本地運行開源AI模型"></p><p><span>上述</span><span>Ruby</span><span>程式碼片段的功能包括:</span><span></span></p>#<ol>
<li>
<span>透過「</span><span>net/http</span><span>」、「</span><span>uri</span><span>」和「</span><span></span><span></span><span></span><span></span><span></span><span></span><span># #json</span><span>」三個函式庫,分別執行</span><span>HTTP</span>
</li>請求、解析<li>
<span>URI</span><span>、處理</span><span>JSON</span><span>資料。 </span><span></span><span></span><span>建立包含</span>
</li>API<li>
<span>#端點位址(</span><span>https://www.php. cn/link/dcd3f83c96576c0fd437286a1ff6f1f0/api/chat</span><span>)的</span><span>URI</span><span>物件。 </span><span></span><span>使用以</span><span>URI</span>
</li>為參數的<li>
<span>Net::HTTP::Post.new</span><span> #方法,建立新的</span><span>HTTP POST</span>
</li>#請求。 </ol><ol data-indent="1">
<li>
<span></span><span>請求的正文被設定為一個代表了雜湊值的</span><span>JSON</span><span>字串。此雜湊值包含了三個鍵:「模型」、「訊息」和「流」。其中,</span>
</li>
<li>
<span></span><span>模型鍵被設定為“</span>
</li>ruby<li>
<span>”,也就是我們的模型;</span> <span></span><span></span><span>訊息鍵被設定為數組,其中包含了代表使用者訊息的單一雜湊值;</span>
</li>
<li>
<span></span><span>#而流鍵被設定為</span>
</li>false<li>
<span>。 </span><span></span>
</li>
<li>
<span>系統引導模型該如何回應訊息。我們已經在Modelfile中予以了設定。 </span><span></span>
</li>
</ol><ol start="5">使用者資訊是我們的標準提示。 <li>
<span></span><span></span>
</li>模型會以輔助資訊回應。 <li>
<span></span><span></span><span></span><span>訊息雜湊遵循與AI模型交叉的模式。它帶有一個角色和內容。此處的角色可以是系統、使用者和輔助。其中,</span><span></span><span></span><span>HTTP</span><span>請求使用</span><span>Net::HTTP.start</span><span>方法被傳送。此方法會開啟與指定主機名稱和連接埠的網路連接,然後發送請求。連線的讀取逾時時間被設定為</span><span>120</span><span>秒,畢竟我運行的是</span><span>2019</span>
</li>版本英特爾<li>
<span></span><span></span><span></span><span></span>
</li>
</ol><h4>
<span></span><span></span>
</h4><p><span></span><span> Mac</span><span>,所以反應速度可能有點慢。而在對應的</span><span>AWS</span></p>伺服器上運行時,這將不是問題。 <p><strong><span></span><span></span>伺服器的回應被儲存在「</strong></p>response<p><span>」變數中。 </span><span></span></p><p><span><strong>案例小結</strong></span><a href="https://www.php.cn/link/005f91955ff9fc532184ba7566f088fd" rel="nofollow" target="_blank"><span><strong></strong>#如上所述,運行本地AI模型的真正價值體現在,協助持有敏感數據的公司,處理電子郵件或文件等非結構化的數據,並提取有價值的結構化資訊。在我們參加的專案案例中,我們對客戶關係管理(</span></a>CRM<span><strong>)系統中的所有客戶資訊進行了模型培訓。據此,用戶可以詢問其任何有關客戶的問題,而無需翻閱數百份記錄。 </strong></span></p>
登入後複製
######譯者介紹#####################陳峻(Julian Chen ),51CTO社群編輯,具有十多年的IT專案實施經驗,善於對內部和外部資源與風險實施管控,並專注於傳播網路與資訊安全知識與經驗。 #####################原文標題:################How To Run Open-Source AI Models Locally With Ruby ###############,作者:Kane Hooper################

以上是為了保護客戶隱私,使用Ruby在本地運行開源AI模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!