一、
前言:
最近deepseek(深度求索)公司的開源自然語言處理模型非常火爆。
本人很早就對人工智能比較感興趣,但由于種種原因沒有過多的深入此領域,僅僅是做了一點初步的了解,借著這個deepseek(深度求索)爆火的由頭,本文來詳細探討一下人工智能,并基于Ollama+open-webui這兩個工具,在本地運行一個可對外提供自然語言處理服務的通用大模型,以此做一個簡單的示范。
不過我想在正式的開始實驗前,我們還是首先需要把人工智能相關的一些基本概念搞清楚,這樣也對以后的學習是有幫助的,對我而言,也是把人工智能的相關概念做一個總結和記錄
二、
人工智能的定義的相關概念
1、什么是人工智能領域的細分領域-
在我現有的知識面來理解,人工智能是有很多細分領域的,這里我就不用那些太過高大上的詞語,盡量使用口語來進行描述
- 按應用領域劃分的智能機器人、智能家居、智能醫療、智能金融等;
- 按技術實現方式劃分的機器學習、深度學習、自然語言處理、計算機視覺等等;
- 按智能水平劃分的弱人工智能、強人工智能、超級智能
那么,這么多的概念,如何理解呢?其實,按應用領域劃分,那么種類是非常多的,各行各業都可以應用到人工智能,比如,賓館住宿業的專門用于服務,傳遞東西的智能機器人,無人駕駛技術所使用的各種各樣的智駕系統,都可以理解為人工智能,從應用的角度來探討人工智能是沒有什么太大的意義,而本文是一個技術探討的文章,因此,主要還是從技術實現方式和智能水平這兩個角度來進行探討
🆗,現在就這些技術我挑一些比較主要或者常見的來詳細說說
A、機器學習(Machine Learning,ML)
●監督學習:通過標記數據進行模型訓練,用于分類、回歸等任務。
●無監督學習:在未標記數據上學習數據內在結構和模式,如聚類、降維、異常檢測等。
●半監督學習:結合少量標記數據與大量未標記數據進行學習。
●強化學習:通過與環境的交互,通過試錯過程學習最優策略。
機器學習(Machine Learning,ML)主要是說的人工智能的技術實現方法,在自然語言處理方面,也就是deepseek,openai這些大模型這里,其實是有涉及到這些的,例如,某個模型,需要訓練,那么,訓練方法是需要確定的,我們是采用填鴨式物料投喂,也就是無監督學習,亦或者采用大數據分析,分析這個網絡環境,輿情環境等等環境來進行強化學習呢?或者為了加速這個人工智能的成長速度,多種方式混合呢?據我了解,大部分模型生成都是通過監督學習方式
B、深度學習(Deep Learning,DL)
深度神經網絡(Deep Neural Networks,DNNs):包括卷積神經網絡(CNNs)、循環神經網絡(RNNs)、長短時記憶網絡(LSTMs)、生成對抗網絡(GANs)等,用于圖像識別、語音識別、自然語言處理等領域。
目前來說,大部分也就是主流的技術是卷積神經網絡,深度學習(Deep Learning,DL)主要說的是人工智能訓練的組織方式,那么,具化到技術層面,主要是兩種技術,第一個是tenseflow,第二個是PyTorch。兩者好像都是基于卷積神經網絡的人工智能開發框架
這里插個題外話,python語言的崛起其實是和人工智能有非常大的關系,python的科學計算庫和PyTorch這樣的框架以及爬蟲家族是真正撐起python的骨干庫。人工智能的物料生成基本都是基于python的爬蟲來進行,而在數據挖掘,數據分析,以及本文提到的卷積神經這些都是基于python語言來實現的,因此,有理由相信,未來的世界python語言必定是第一。雖然java,c這樣的語言也可以用于爬蟲等等的實現,但給我的感覺是非常的不方便
C、自然語言處理(Natural Language Processing,NLP)
●文本分析:詞法分析、語法分析、語義分析、情感分析等。
●語音識別與合成:將語音轉化為文字(ASR)及反之(TTS)。
●對話系統:聊天機器人、語音助手等。
●機器翻譯:自動將文本從一種語言翻譯成另一種語言。
deepseek,chatgpt,豆包,文心一言,kimi,通義千問等等這些大模型都是屬于此范疇
這些模型各有特色,俗話說 文無第一,武無第二,如果誰非要說這些大模型哪個更好,可能是沒有一個確定的答案
這些NLP工具我都有使用,從準確率來說,我想通義千問應該是最高的,阿里大廠確實是很給力的,不過 我的主要應用是電子信息方面,只能說各有側重吧。
自然語言處理(Natural Language Processing,NLP)的意思就是自然語言生成,主要是機器把自然語言翻譯為機器能理解的東西,然后機器返回給使用者機器重新編譯的自然語言
說直白點就是機器----解碼自然語言----加工自然語言---重新編碼自然語言,但這個加工的過程是有機器的見解,理解,會有一個升華的過程
當然了,像天貓精靈,小米智能音箱這些語音識別處理也算是此范疇
比如,假設我有一個python腳本,感覺不太正確,但具體哪不正確并不清楚,那么,此時我們告訴通義千問,它認為這個python腳本哪有問題,它首先就需要把這個腳本內容解碼后讓機器理解,然后,它根據前面的模型訓練,理解這個python腳本,在完成理解python腳本工作后,它會將它認為錯誤的地方指出并修正,這個時候就需要機器將機器語言重新編碼成python腳本,返回給使用者,那么,這么一個過程,就是一個完整的自然語言處理過程了
D、計算機視覺(Computer Vision,CV)
●圖像識別與分類:物體識別、人臉識別、車牌識別等。
●目標檢測與追蹤:在圖像或視頻中定位并跟蹤特定對象。
●圖像分割:將圖像劃分為具有不同語義意義的區域。
●三維重建與SLAM:從二維圖像重建三維模型,或實現室內/室外環境的實時定位與建圖。
這個我比較熟悉,主要是采用opencv這樣的框架進行開發
主要應用在交通管理,社會治安,房屋設計這些領域
比如,某個刑事案件,很多時候是需要查看監控,很多時候監控錄像檢索時間范圍可能是幾周或者幾個月,那么,如果單純靠人力基本是無法完成的,而人工智能可以依據目標人物特征,快速的檢索監控,很快就可以尋找到目標人物或者目標車輛
同樣的,在處理交通肇事等類似事件時,人工智能也能夠通過快速檢索路面監控確定嫌疑車輛
收費站過橋等等,人工智能識別車牌號,并記錄車牌號,最終形成車輛行駛軌跡等等場景的應用也基本都是基于opencv這個框架完成的
多說一句,opencv是c++語言編寫的,這個對于python來說,不得不說是一個遺憾的事情
E、機器人學(Robotics)
●自主導航:路徑規劃、避障、定位與地圖構建(SLAM)等。
●機械臂控制與規劃:運動學、動力學建模,軌跡規劃與控制。
●人機交互:手勢識別、語音交互、情感識別等。
機器人學(Robotics)主要應用在自動化生產車間,車機交互系統
比較出名的是華為的問界智駕,特斯拉的智駕以及宇樹雙足機器人等等這些應用領域,當然,銀行里的導航機器人,酒店的服務機器人也在此領域
F、知識表示與推理(Knowledge Representation&Reasoning,KRR)
●知識圖譜:構建、存儲、查詢和更新實體及其關系的知識庫。
●符號推理:基于邏輯、規則和約束進行推理。
●不確定推理:處理模糊、概率、證據理論等不確定知識。
這個類似百度百科這樣的東西,遙測,預測,總的來說比較寬泛的一個概念,主要偏向應用層面
還有其它的應用層面,技術路線是混合的,就不在此過多介紹了,比如腦機接口,股市量化交易預測,大數據內容分析等等
三、大模型的相關概念
1、什么是大模型
大模型全稱是大型語言模型(Large Language Model, LLM),通常指的是在機器學習和人工智能領域中,具有大量參數的模型,能夠捕捉和學習更復雜的數據模式,從而在各種任務上表現出色,例如語言理解、圖像識別和預測分析等,具有更好的性能和更強的泛化能力。相比傳統小模型,大模型具有更多參數,基于強大的計算資源,訓練大量數據,提高模型的表達能力和預測性能。
隨著人工智能技術的發展,超大模型(Huge Models)和基座模型(Foundation Model)正在變得越來越重要,它們在推動人工智能領域的發展和突破方面發揮著關鍵作用。
so,如果你看到某個文件名稱帶有llm,這個時候不用疑惑,它就是大模型文件
當然了,從模型功能來說,也可以叫基礎模型(Foundation Model),基座模型
總而言之,大模型就是一個虛擬的龐然大物,架構復雜、參數龐大、依賴海量數據,且非常燒錢。
那么,有些大模型是開源的,比如deepseek
國內下載大模型的網址是? ? 魔搭社區? ,這個社區是一個開源社區,阿里云運營的,非常nice的一個社區,有命令行工具
???????通過ollama工具下載大模型:Ollama
huggingface官網:https://huggingface.co/models? ?(需要科學上網支持,國外的)
魔搭社區
這些模型庫點進去后,會發現一些奇怪的文件,比如:model-00001-of-00008.safetensors,那么這個文件是干什么的?表示什么意義呢?
2、如何獲取模型文件
例子1:
model-00001-of-00008.safetensors
?是一個模型文件,通常用于存儲機器學習模型的權重和參數。具體來說:
-
文件格式:
.safetensors
?是一種用于存儲模型權重的文件格式。與傳統的?.bin
?或?.pt
?文件相比,.safetensors
?提供了更高效和安全的存儲方式,特別適合大規模模型。 -
分片存儲:文件名中的?
00001-of-00008
?表示這個文件是模型權重的一部分,總共有 8 個分片。這種分片存儲方式常用于大型模型,因為單個文件可能過大,不方便存儲和傳輸。 -
用途:這個文件通常用于加載預訓練模型。在深度學習任務中,模型權重文件是模型的核心部分,加載這些權重后,模型可以進行推理或進一步的微調。
-
加載方式:要使用這個文件,通常需要結合相應的模型架構代碼和加載工具(如 Hugging Face 的?
transformers
?庫或?safetensors
?庫)。
這種格式的文件,我們可以認為它就是原始模型,只是通常會很大,一般家庭是無法運行的,需要很多硬件資源支撐
例如deepseek -r1的模型庫下載地址:
魔搭社區
例子2:
還有一種文件格式gguf文件,例如DeepSeek-R1-Distill-Llama-8B-Q5_K_M.gguf這個文件,該文件又是干什么的?表示什么意義呢?
DeepSeek-R1-Distill-Llama-8B-Q5_K_M.gguf
?是一個模型文件,具體來說:
-
文件格式:
.gguf
?是一種用于存儲機器學習模型權重和架構的文件格式。這種格式通常用于高效地存儲和加載大型模型。 -
模型類型:文件名中的?
Llama-8B
?表明這是一個基于 LLaMA(Large Language Model Meta AI)架構的模型,具有 80 億個參數。LLaMA 是由 Meta(前 Facebook)開發的一系列大型語言模型,Distill 蒸餾的意思,可以理解為
基于 LLaMA-8B 模型通過知識蒸餾技術得到的 -
量化信息:
Q5_K_M
?表示該模型經過了量化處理。量化是一種減少模型大小和計算需求的技術,通過降低權重的精度來實現。Q5_K_M
?是一種特定的量化方法,通常在保持模型性能的同時減少資源消耗。 -
用途:這個文件可以用于加載和使用一個經過量化的 LLaMA 模型,適用于自然語言處理任務,如文本生成、翻譯、問答等。
-
加載方式:要使用這個文件,通常需要結合相應的模型加載工具和框架,如?
llama.cpp
?或其他支持?.gguf
?格式的工具,比如ollama -
Q5_K_M
?是一種量化方法的表示,通常用于描述機器學習模型的量化級別和方式。以下是對?Q5_K_M
?的具體解釋:Q5?表示量化級別為 5 位(5-bit)。這意味著模型中的權重或激活值被量化為 5 位整數。與常見的 8 位量化(Q8)相比,5 位量化進一步減少了模型的存儲空間和計算需求,但可能會引入更多的精度損失。
-
KK通常表示量化方法中的一種特定技術或配置。在量化中,
K
?可能代表某種分組量化(Group Quantization)或塊量化(Block Quantization)方法。這種方法將權重分成若干組或塊,每組或塊使用獨立的量化參數,以提高量化的靈活性和精度。 -
M?通常表示量化方法中的一種變體或模式。它可能代表一種混合量化(Mixed Quantization)策略,即在模型的不同部分使用不同的量化精度或方法。例如,某些關鍵層可能使用更高的精度,而其他層使用更低的精度。
那么,單位B具體表示什么?除了B還有什么單位?
在機器學習和大模型領域,模型的大小通常用參數數量來表示。常見的單位包括:
-
B (Billion):表示十億(1,000,000,000)個參數。例如,Llama-8B 表示該模型有 80 億個參數,當然這個數字越大,表示模型越好
-
Q
: 表示百萬億(quadrillion)參數。 -
M (Million):表示百萬(1,000,000)個參數。例如,一個模型有 500M 參數,意味著它有 5 億個參數。
-
T (Trillion):表示萬億(1,000,000,000,000)個參數。這是非常大的模型,通常用于最先進的模型,如 GPT-3 和 GPT-4。當然這個數字越大,表示模型越好
-
K (Thousand):表示千(1,000)個參數。這個單位較少用于描述大型模型,但在某些情況下可能會用到。
3、量化處理的概念
量化處理(Quantization)是一種在機器學習和深度學習中用于減少模型大小和計算需求的技術。它通過降低模型參數的精度來實現這一目標。以下是量化處理的主要概念和優勢:
1.?基本原理
量化處理將模型中的浮點數參數(通常是 32 位或 16 位浮點數)轉換為更低精度的表示形式(如 8 位整數或更低)。例如:
-
原始參數:32 位浮點數(float32)
-
量化后:8 位整數(int8)或 4 位整數(int4)
2.?量化類型
-
權重量化:僅對模型的權重進行量化。
-
激活量化:對模型的激活值(即中間計算結果)進行量化。
-
混合量化:對權重和激活值都進行量化。
3.?量化方法
-
線性量化:將浮點數范圍線性映射到整數范圍。
-
非線性量化:使用非線性函數(如對數或分段函數)進行映射。
-
對稱量化:量化范圍對稱于零。
-
非對稱量化:量化范圍不對稱。
4.?優勢
-
減少模型大小:量化后的模型占用更少的存儲空間。
-
加速推理:低精度計算通常更快,尤其是在支持低精度計算的硬件上。
-
降低功耗:低精度計算消耗更少的能量,適合移動設備和嵌入式系統。
5.?挑戰
-
精度損失:量化可能導致模型性能下降,尤其是在過度量化時,具體表現就是回答的正確率降低以及答非所問等等情況
-
硬件支持:需要硬件支持低精度計算才能充分發揮量化的優勢。
6.?應用場景
-
移動設備:在手機、平板等設備上運行深度學習模型,這其實意味著可以在家用電腦上部署本地大模型了
-
邊緣計算:在資源受限的邊緣設備上部署模型。
-
大規模部署:在云端或數據中心部署大型模型時減少資源消耗。
量化處理是優化深度學習模型的重要技術之一,能夠在保持模型性能的同時顯著減少資源需求,簡單的說,就是可以部署在硬件資源不太充足的服務器上,例如,家用級i713700+4060ti+32GB這樣的平臺
稍作總結:
總結來說,gguf文件,盡量每個數字大一點,越大越好,比如精度高,表示答案生成更準確,B數字更高,表示可回答范圍更廣,回答更細致
以DeepSeek-R1-Distill-Llama-70B-Q5_K_S.gguf為例,這個文件如果部署成功后,相應速度,回答準確率,回答范圍會很高,但同時需要注意,文件越大,部署所需要的資源也更多,通常整個文件是都要讀入內存的,也就是說內存需要至少64G
還有一個需要注意的地方,通常這些文件部署的時候不需要太高端的顯卡,也不需要安裝什么cuda,驅動,python環境什么的,ollama可以直接運行,只是需要本地的硬件資源足夠就行了
本地部署加載大模型文件通常使用兩個工具,第一個是ollama,第二個是hugging
Ollama 是一個強大的工具,使得在本地運行和管理大型語言模型變得更加簡單和高效。無論是開發者、研究人員還是普通用戶,都可以通過 Ollama 輕松地利用語言模型進行各種任務。
那么,對于學習人工智能來說,其實主要就是通過上面所提到的模型網站所提供的文件,本地部署后進行直接推理使用或者微調以適應自身的需求
本地部署的顯著優點第一個是安全,第二個是可以進行個性化微調,但微調需要的技術比較多而已,其次需要的硬件資源也很多
比如DeepSeek-R1-Distill-Qwen-32B-Q3_K_M.gguf 這個文件,大小是14.8G,我的硬件如下才跑起來,推理的時候經常能聞到顯卡淡淡的糊味,不過只安裝了ollama,其它什么cuda,python環境是一點沒有安裝:
參考文獻:寫給小白的大模型入門科普
?
??????????????
??????????????