偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Ollama 本地大模型與多模態(tài)大模型

人工智能
在深度學(xué)習(xí)模型中,大部分參數(shù)和計(jì)算都需要非常高的精度。但研究發(fā)現(xiàn),在推理階段,模型并不總是需要這么高的精度。很多時(shí)候,我們可以用更小的、更簡(jiǎn)單的數(shù)字來(lái)近似表示這些參數(shù),而模型性能(如準(zhǔn)確率)的損失卻非常小,甚至可以忽略不計(jì)。

傳統(tǒng)的大模型開(kāi)發(fā)需要大量的 GPU 資源,以參數(shù)量最小的 Llama 2 7B 為例,也需要 14G 顯存,而且每一種大模型都有自己的開(kāi)發(fā)接口,這導(dǎo)致普通人很難在自己的本地環(huán)境構(gòu)建大模型、體驗(yàn)大模型。

所以,Ollama 構(gòu)建了一個(gè)開(kāi)源大模型的倉(cāng)庫(kù),統(tǒng)一了各個(gè)大模型的開(kāi)發(fā)接口,讓普通開(kāi)發(fā)者可以非常方便地下載,安裝和使用各種大模型。

本質(zhì)上,Ollama 是一套構(gòu)建和運(yùn)行大模型的開(kāi)發(fā)框架,它采用的模型量化技術(shù)進(jìn)一步降低了大模型對(duì)顯存的需求。

模型量化

模型量化 (Model Quantization) 是一種用于減小深度學(xué)習(xí)模型大小并加快推理速度的技術(shù)。簡(jiǎn)單來(lái)說(shuō),就是把模型中原本用高精度浮點(diǎn)數(shù)(如32位浮點(diǎn)數(shù),F(xiàn)P32)表示的參數(shù)(權(quán)重和激活值),轉(zhuǎn)換成低精度的定點(diǎn)數(shù)(如8位整數(shù),INT8)。

舉個(gè)簡(jiǎn)單的例子,一個(gè)普通的浮點(diǎn)數(shù)就像是用很長(zhǎng)的十進(jìn)制數(shù)來(lái)表示一個(gè)數(shù)字,比如 3.1415926535...。而一個(gè)整數(shù)就像是用一個(gè)簡(jiǎn)單的、沒(méi)有小數(shù)點(diǎn)的數(shù)字來(lái)表示,比如 3。

在深度學(xué)習(xí)模型中,大部分參數(shù)和計(jì)算都需要非常高的精度。但研究發(fā)現(xiàn),在推理階段,模型并不總是需要這么高的精度。很多時(shí)候,我們可以用更小的、更簡(jiǎn)單的數(shù)字來(lái)近似表示這些參數(shù),而模型性能(如準(zhǔn)確率)的損失卻非常小,甚至可以忽略不計(jì)。

命令行運(yùn)行

從 Ollama 官網(wǎng)可以看到,Ollama 已經(jīng)實(shí)現(xiàn)了多平臺(tái)支持,包括 MacOS,Linux 和 Windows。

圖片圖片

環(huán)境是一臺(tái) 24G 顯存的 4090 服務(wù)器,你也可以看下自己的配置,顯存越高運(yùn)行越順暢。

圖片圖片

Linux 環(huán)境下安裝 Ollama 只需要一個(gè)簡(jiǎn)單的命令行,非常方便。

curl -fsSL https://ollama.com/install.sh | sh

下面是 Ollama 的模型倉(cāng)庫(kù)截圖,你可以隨時(shí)切換模型,用 pull 命令就能下載模型。

圖片圖片

接著,你可以使用 ollama run 命令進(jìn)入對(duì)話(huà)模式,從命令行運(yùn)行效果看,我們已經(jīng)可以將其看做命令行版本的 “GPT 大模型”了。

# 對(duì)話(huà)模式
% ollama run llama2-chinese

接口 API

我們用 Ollama 的 Python 接口來(lái)定制自己的大模型。

這里面有一個(gè) Modelfile,它是 Ollama 大模型的配置文件,你可以修改各種配置,然后運(yùn)行接口程序。比如我就自己配置了一個(gè)基于 Llama2 的大模型,設(shè)置了溫度,token 數(shù)量和系統(tǒng)提示詞。

FROM llama2
# 設(shè)定溫度參數(shù)為1 [更高的更具有創(chuàng)新性,更低的更富有連貫性]
PARAMETER temperature 1
# 將上下文窗口大小設(shè)置為4096,這控制著LLM能夠使用多少個(gè)token來(lái)生成下一個(gè)token。
PARAMETER num_ctx 4096


# 設(shè)置了自定義系統(tǒng)消息以指定聊天助手的行為。你是馬里奧,來(lái)自《超級(jí)馬里奧兄弟》,扮演一名助手的角色。
SYSTEM You are Mario from super mario bros, acting as an assistant.

然后,創(chuàng)建一個(gè) Modelfile 文件,在 Linux 中運(yùn)行自定義的大模型。

ollama create example -f ./Modelfile
ollama run example

你還可以用 Python 代碼調(diào)用大模型的接口。

import requests
import json


# 設(shè)置 API 端點(diǎn)
url = "http://localhost:11434/api/chat"


# 定義請(qǐng)求數(shù)據(jù)
data = {
    "model": "llama2",
    "messages": [
        {"role": "user", "content": "Why is the sky blue?"}
    ]
}


# 發(fā)送 POST 請(qǐng)求
response = requests.post(url, headers={"Content-Type": "application/json"}, data=json.dumps(data))


# 檢查響應(yīng)狀態(tài)碼
if response.status_code == 200:
    # 解析并打印響應(yīng)內(nèi)容
    response_data = response.json()
    print(response_data['message']['content'])
else:
    print(f"Error: {response.status_code}")

好了,有了大模型接口支持,你就可以在 Ollama 框架下編寫(xiě)自己的 AI 應(yīng)用了。

模型微調(diào)

Ollama 也支持大模型微調(diào)。假設(shè)我們的目標(biāo)是要實(shí)現(xiàn)一個(gè)二進(jìn)制跳動(dòng)專(zhuān)有小助理的大模型,就可以在 Llama2 的模型基礎(chǔ)上做數(shù)據(jù)微調(diào),最終得到的專(zhuān)用模型還可以在 Ollama 架構(gòu)下運(yùn)行。

模型微調(diào)的核心是整理小助理相關(guān)的問(wèn)題數(shù)據(jù)集,比如下面這個(gè)數(shù)據(jù)集的例子。

train_data = [
    {"role": "user", "content": "你是誰(shuí)?", "response": "我是二進(jìn)制跳動(dòng)的小二,一個(gè)虛擬客服助手。"},
    {"role": "user", "content": "二進(jìn)制跳動(dòng)是什么?", "response": "二進(jìn)制跳動(dòng)是一個(gè)提供技術(shù)和職業(yè)發(fā)展的在線(xiàn)學(xué)習(xí)平臺(tái),擁有豐富的課程和資源。"},
    {"role": "user", "content": "你能做什么?", "response": "我可以回答關(guān)于極客時(shí)間平臺(tái)的問(wèn)題,幫助你找到課程,還可以提供學(xué)習(xí)建議。"},
    {"role": "user", "content": "如何聯(lián)系人工客服?", "response": "你可以通過(guò)點(diǎn)擊頁(yè)面右下角的“聯(lián)系客服”按鈕來(lái)聯(lián)系人工客服。"},
    {"role": "user", "content": "平臺(tái)上有哪些課程?", "response": "極客時(shí)間提供各種技術(shù)和職業(yè)發(fā)展的課程,包括編程、架構(gòu)、數(shù)據(jù)科學(xué)等領(lǐng)域的課程。"},
    {"role": "user", "content": "課程需要付費(fèi)嗎?", "response": "是的,極客時(shí)間的大部分課程都是需要付費(fèi)的。你可以在平臺(tái)上查看具體課程的價(jià)格。"},
    {"role": "user", "content": "如何購(gòu)買(mǎi)課程?", "response": "你可以在課程頁(yè)面點(diǎn)擊“購(gòu)買(mǎi)”按鈕,然后按照提示進(jìn)行支付即可。"},
    {"role": "user", "content": "課程可以退款嗎?", "response": "根據(jù)平臺(tái)的退款政策,購(gòu)買(mǎi)后7天內(nèi)可以申請(qǐng)退款,具體請(qǐng)查看平臺(tái)的退款政策。"}
    ... ...
]

你還可以使用 Hugging Face 的 transformers 庫(kù)結(jié)合上述數(shù)據(jù)進(jìn)行微調(diào), 這樣就可以讓微調(diào)后的大模型學(xué)習(xí)到小助理日常的對(duì)話(huà)方式和常見(jiàn)的知識(shí)問(wèn)答,下面是示例代碼。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments
... 


# 加載預(yù)訓(xùn)練模型和分詞器
model_name = "facebook/llama-7b"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)


# 將數(shù)據(jù)轉(zhuǎn)換為 DataFrame
df = pd.DataFrame(train_data)
...
# 初始化 Trainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
)


# 開(kāi)始訓(xùn)練
trainer.train()


# 保存微調(diào)后的模型
model.save_pretrained("./fine_tuned_llama")
tokenizer.save_pretrained("./fine_tuned_llama")

我把微調(diào)完成后生成新的模型命名為 fine_tuned_llama。在此基礎(chǔ)上修改 Python 代碼里的模型名稱(chēng),就可以實(shí)現(xiàn)小助理專(zhuān)用模型的調(diào)用了。

# 定義請(qǐng)求數(shù)據(jù)
data = {
    "model": "fine_tuned_llama",  # 微調(diào)后的模型名稱(chēng)
    "messages": [
        {"role": "user", "content": "你是誰(shuí)?"}
    ]
}

什么是多模態(tài)大模型?

好了,到目前為止,我們的例子都是文本大模型。但是,我們的目標(biāo)是實(shí)現(xiàn)一個(gè)真正的語(yǔ)音小助手,那就還需要進(jìn)一步了解多模態(tài)大模型。

OpenAI 的 GPT-4 已經(jīng)實(shí)現(xiàn)了大模型的多模態(tài),包括圖片大模型 DALL-E 3,TTS 語(yǔ)音模型和視頻大模型。簡(jiǎn)單地說(shuō),除了文本,還支持其他輸入輸出格式的就叫多模態(tài)大模型。很多人會(huì)認(rèn)為圖片,語(yǔ)音,視頻大模型的實(shí)現(xiàn)和語(yǔ)言大模型完全不一樣,其實(shí)不然。

多模態(tài)的原理

關(guān)于多模態(tài)大模型的原理,我曾經(jīng)接受過(guò)有一個(gè)博主的點(diǎn)醒,他說(shuō):多模態(tài)模型和語(yǔ)言模型一樣本質(zhì)就是一個(gè)序列化模型。因此多模態(tài)只是語(yǔ)言大模型的擴(kuò)展。

以相對(duì)簡(jiǎn)單的語(yǔ)音模型為例,先看下面的語(yǔ)音頻譜圖。下面的頻譜圖展示了音頻信號(hào)里三個(gè)維度的信息。

圖片圖片

  • 時(shí)間(Time):這是橫軸,表示音頻隨時(shí)間的變化而變化。每個(gè)時(shí)間點(diǎn)對(duì)應(yīng)音頻信號(hào)的一幀。
  • 頻率(Frequency):這是縱軸,表示音頻信號(hào)的頻率成分。
  • 分貝(dB):這是顏色表示的信息,表示每個(gè)時(shí)間 - 頻率點(diǎn)上的能量強(qiáng)度。這張圖右側(cè)的顏色條(colorbar)顯示的就是不同顏色對(duì)應(yīng)的分貝值。

我們假設(shè)這個(gè)音頻對(duì)應(yīng)的文本是 極客時(shí)間是一個(gè)……。從頻譜圖上,能非常明顯地看到時(shí)間線(xiàn)的一個(gè)顏色條對(duì)應(yīng)一個(gè)中文字,不管音頻的三個(gè)維度怎么表示,我們都可以把這個(gè)語(yǔ)音看做和文本一樣的序列。

圖片圖片

多模態(tài)語(yǔ)音模型也確實(shí)可以用 Transformer 架構(gòu)來(lái)訓(xùn)練。只要經(jīng)過(guò)足夠的文本 - 語(yǔ)音序列數(shù)據(jù)訓(xùn)練,大模型就可以準(zhǔn)確識(shí)別出底層的文本 - 語(yǔ)音數(shù)據(jù)模式,從而實(shí)現(xiàn)文本 - 語(yǔ)音的翻譯。

那么圖片多模態(tài)模型又是怎么實(shí)現(xiàn)的呢?其實(shí)原理也是相通的。

首先,圖像需要被處理成適合 Transformer 輸入的格式。通常來(lái)說(shuō),圖像會(huì)被分割成小塊(patches),每個(gè)小塊會(huì)被展平成一個(gè)向量,然后輸入到 Transformer 中。以 32 x 32 像素的圖像為例,假設(shè)我們將圖像分割成 4 x 4 的小塊(即每個(gè)小塊包含 8 x 8 個(gè)像素),那么整個(gè)圖像就會(huì)被分割成 16 個(gè)小塊。

圖片圖片

按這種劃分方法,一個(gè)圖像也可以轉(zhuǎn)成一個(gè)序列化的串。每一張圖加上文本描述,就成為了文字 - 圖片的序列串。雖然這樣的圖片序列化對(duì)人來(lái)說(shuō)看不出任何的語(yǔ)義對(duì)應(yīng)關(guān)系,但是經(jīng)過(guò) Transformer 訓(xùn)練之后,大模型就可以學(xué)習(xí)到文本 - 圖片之間的語(yǔ)義關(guān)系。

更形象地說(shuō),就是讓大模型學(xué)習(xí)大量的對(duì)應(yīng)關(guān)系。比如一個(gè)蘋(píng)果在桌子上,一個(gè)西瓜在地上。

圖片圖片

最終大模型可以在用戶(hù)輸入 一個(gè)蘋(píng)果在地上 的時(shí)候,就能準(zhǔn)確地輸出這個(gè)關(guān)系的圖像。

圖片圖片

這里的西瓜、蘋(píng)果、桌子、地面以及上下關(guān)系,就是大模型從文本 - 圖片序列串中學(xué)習(xí)到的。

體驗(yàn) TTS 大模型

要實(shí)現(xiàn)一個(gè)語(yǔ)音小助手,最核心的能力當(dāng)然是語(yǔ)音能力,那語(yǔ)音能力如何跟 Ollama 大模型文本能力對(duì)接呢?這里就要用到 TTS 技術(shù)。

TTS 是 Text-to-Speech 的縮寫(xiě),指的是文本轉(zhuǎn)語(yǔ)音技術(shù)。通過(guò) TTS,用戶(hù)可以輸入文字,讓計(jì)算機(jī)生成自然語(yǔ)音,從而實(shí)現(xiàn)語(yǔ)音提示、有聲書(shū)、語(yǔ)音助手之類(lèi)的功能。

GPT-SoVITS 就是一個(gè)可以實(shí)現(xiàn)語(yǔ)音克隆的 TTS 大模型,最大的特點(diǎn)是只需要 5s 左右的語(yǔ)音輸入樣本,就可以實(shí)現(xiàn)語(yǔ)音克隆,之后還可以用我們訓(xùn)練好的模型實(shí)現(xiàn) TTS 文本轉(zhuǎn)語(yǔ)音操作,音色、音調(diào)的還原度也很高。

GPT-SoVITS 里的 GPT

GPT-SoVITS 的架構(gòu)其實(shí)就是結(jié)合了 GPT (Generative Pre-trained Transformer,生成式預(yù)訓(xùn)練變形器)模型和 SoVITS(Speech-to-Video Voice Transformation System)變聲器技術(shù)。

圖片圖片


的基礎(chǔ)還是 Transformer 模型,通過(guò)大量的文字 + 語(yǔ)音波形序列化數(shù)據(jù)訓(xùn)練,得到一個(gè)可以完成文字到語(yǔ)音翻譯的模型,從而實(shí)現(xiàn) TTS。其實(shí)本質(zhì)還是一個(gè)序列化的模型訓(xùn)練。

而音色音調(diào)的克隆怎么辦呢?答案是,通過(guò) SoVITS 技術(shù)實(shí)現(xiàn)。GPT-SoVITS 的更進(jìn)一步技術(shù)細(xì)節(jié)我也還沒(méi)有來(lái)得及分析,不過(guò)這個(gè)項(xiàng)目給我們最大的啟發(fā)就是可以在更多的多模態(tài)場(chǎng)景下嘗試應(yīng)用 GPT 模型原理,可能會(huì)有不少意料之外的效果。

低成本云端環(huán)境

GPT-SoVITS 的官方已經(jīng)提供了一個(gè)非常優(yōu)秀的教程,我按這個(gè)教程順利地搭建了模型并克隆了自己的聲音。

我選用的是 AutoDL 云計(jì)算環(huán)境。注意選用一個(gè) GPT-SoVITS 的鏡像創(chuàng)建主機(jī),下面是我具體的主機(jī)配置。

圖片圖片

下面是我選用的具體鏡像信息。

圖片圖片


AutoDL 云計(jì)算的成本大約在 2 元 / 小時(shí)左右,整個(gè)訓(xùn)練過(guò)程我花了不到 10 元,還是非常經(jīng)濟(jì)的,購(gòu)買(mǎi)了主機(jī)之后,可以進(jìn)入 GPT-SoVITS 的界面,所有的后續(xù)訓(xùn)練操作都在這個(gè)界面上完成。

圖片圖片

正式開(kāi)始訓(xùn)練前需要錄制一小段自己的語(yǔ)音,用于克隆訓(xùn)練。

低成本語(yǔ)音克隆

整個(gè)過(guò)程分為語(yǔ)音分割,模型訓(xùn)練,語(yǔ)音合成這三個(gè)步驟。

剛才說(shuō)了,先準(zhǔn)備自己的錄音文件,我的語(yǔ)音文本如下。

二進(jìn)制跳動(dòng)是一個(gè)非常有趣的平臺(tái),我在這里不僅僅獲取了豐富的知識(shí),還能夠與志同道合的人分享學(xué)習(xí)的樂(lè)趣。通過(guò)極客時(shí)間,我拓展了視野,深入了解了技術(shù)領(lǐng)域的前沿動(dòng)態(tài)和實(shí)踐經(jīng)驗(yàn),這些知識(shí)對(duì)我的職業(yè)發(fā)展和個(gè)人興趣都帶來(lái)了極大的幫助和啟發(fā)。

第一步,將這個(gè)錄制語(yǔ)音提取出純?nèi)寺暤囊纛l,再進(jìn)行分割,按一定秒數(shù)分割成語(yǔ)音文件,最后對(duì)語(yǔ)音做文本識(shí)別。這個(gè)過(guò)程的目的就是生成文本 - 語(yǔ)音的序列數(shù)據(jù),為下一步的微調(diào)做數(shù)據(jù)準(zhǔn)備。

圖片圖片

第二步,在剛才準(zhǔn)備的文本和語(yǔ)音數(shù)據(jù)基礎(chǔ)上,微調(diào) GPT-SoVITS 訓(xùn)練自己的 TTS 模型。這里你可以自由發(fā)揮,直接在界面上操作,過(guò)程比我想象得要快很多,大概不到 10 分鐘。

圖片圖片

OK,現(xiàn)在已經(jīng)生成了經(jīng)過(guò)微調(diào)的 TTS 模型,可以做 TTS 文本合成語(yǔ)音了,而且你也可以直接將這個(gè)模型分享給別人。

圖片圖片

現(xiàn)在,用這個(gè)文本生成的語(yǔ)音已經(jīng)完全克隆了我的聲音,復(fù)刻了音色、音調(diào)和語(yǔ)速。你也可以用自己的真實(shí)聲音訓(xùn)練出一個(gè)用于實(shí)現(xiàn)語(yǔ)音助手的專(zhuān)有 TTS 語(yǔ)音大模型。


責(zé)任編輯:武曉燕 來(lái)源: 二進(jìn)制跳動(dòng)
相關(guān)推薦

2024-05-08 17:05:44

2024-12-30 00:01:00

多模態(tài)大模型Python

2025-01-08 08:21:16

2025-04-07 00:00:00

多模態(tài)大模型

2024-09-25 14:53:00

2024-12-18 18:57:58

2024-11-13 09:39:13

2024-11-11 15:11:23

2024-11-12 10:20:00

模型數(shù)據(jù)

2024-05-17 16:02:00

2023-08-14 07:20:10

2025-08-05 02:25:00

多模態(tài)大語(yǔ)言模型

2024-03-20 13:18:46

模型多模態(tài)體系

2024-03-25 12:40:19

訓(xùn)練模型

2024-05-10 06:59:06

2025-02-13 00:00:12

LangServeDeepsee大模型

2024-09-10 12:11:18

2025-05-21 08:47:00

2023-08-30 13:23:00

模型訓(xùn)練
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)