主頁 >  其他 > 基于ChatGPT用AI實作自然對話

基于ChatGPT用AI實作自然對話

2023-05-01 07:26:08 其他

1.概述

ChatGPT是當前自然語言處理領域的重要進展之一,通過預訓練和微調的方式,ChatGPT可以生成高質量的文本,可應用于多種場景,如智能客服、聊天機器人、語音助手等,本文將詳細介紹ChatGPT的原理、實戰演練和流程圖,幫助讀者更好地理解ChatGPT技術的應用和優勢,

2.內容

在當今快速發展的人工智能領域,自然語言處理(Natural Language Processing, NLP)技術是研究的重要方向之一,NLP技術的目標是幫助計算機更好地理解和處理人類語言,從而實作人機互動、自然語言搜索、文本摘要、語音識別等應用場景,

ChatGPT是當前自然語言處理領域的重要進展之一,可以生成高質量的文本,可應用于多種場景,如智能客服、聊天機器人、語音助手等,本文將詳細介紹ChatGPT的原理、實戰演練和流程圖,幫助讀者更好地理解ChatGPT技術的應用和優勢,

2.1 原理分析

ChatGPT是由OpenAI推出的一種基于Transformer的預訓練語言模型,在自然語言處理中,預訓練語言模型通常是指使用無標簽文本資料訓練的模型,目的是為了提高下游任務(如文本分類、命名物體識別、情感分析)的性能,ChatGPT是預訓練語言模型的一種,它采用了單向的Transformer模型,通過大規模的文本資料預訓練模型,再在具體任務上進行微調,從而實作高質量的文本生成和自然對話,

下面我們來詳細介紹一下ChatGPT的原理,

2.1.1 Transformer模型

ChatGPT模型采用了單向的Transformer模型,Transformer模型是一種基于注意力機制的編碼-解碼框架,由Google在2017年提出,它是目前自然語言處理中應用最廣泛的模型之一,已經被證明在多種任務上取得了比較好的性能,

Transformer模型的核心是多頭注意力機制,它允許模型在不同位置上對輸入的資訊進行不同的關注,從而提高模型的表達能力,同時,Transformer模型采用了殘差連接和Layer Normalization等技術,使得模型訓練更加穩定,減少了梯度消失和梯度爆炸等問題,

在Transformer模型中,輸入的序列首先經過Embedding層,將每個詞映射為一個向量表示,然后輸入到多層Transformer Encoder中,每一層包括多頭注意力機制和前向傳播網路,在多頭注意力機制中,模型會計算出每個位置與其他位置的關聯程度,從而得到一個權重向量,將這個權重向量應用到輸入上,就得到了每個位置的加權表示,接下來,模型會將每個位置的加權表示與原始輸入進行殘差連接和Layer Normalization,從而得到更好的表達,

在ChatGPT模型中,Encoder和Decoder是相同的,因為它是單向的模型,只能使用歷史資訊生成當前的文本,每次生成一個新的詞時,模型會將歷史文本作為輸入,通過Decoder生成下一個詞,

2.1.2 預訓練

ChatGPT模型的預訓練使用的是大規模的無標簽文本資料,例如維基百科、網頁文本等,這些資料可以包含數十億甚至數百億的單詞,預訓練的目的是讓模型學習到文本的語言規律和語意資訊,從而提高模型的泛化能力,預訓練使用的是語言建模任務,即在給定部分文本的情況下,模型預測下一個詞是什么,預測的損失函式采用交叉熵損失函式,通過反向傳播和隨機梯度下降演算法更新模型引數,

2.1.3 微調

ChatGPT模型的微調是指在特定的任務上,針對不同的資料集,對預訓練模型進行微調,微調的目的是將模型應用到具體的場景中,例如聊天機器人、智能客服等,微調程序中,我們會為模型添加一些特定的輸出層,根據具體的任務來調整模型的引數,

2.2 ChatGPT

ChatGPT是一款通用的自然語言生成模型,即GPT翻譯成中文就是生成型預訓練變換模型,這個模型被互聯網巨大的語料庫訓練之后,它就可以根據你輸入的文字內容,來生成對應的文字回答,也就是常見的聊天問答模式,比如:

 語言模型的作業方式,是對語言文本進行概率建模,

 用來預測下一段輸出內容的概率,形式上非常類似于我們小時候玩的文字接龍游戲,比如輸入的內容是你好,模型就會在可能的結果中,選出概率最高的那一個,用來生成下一部分的內容

 

從體驗的反饋來看,ChatGPT對比其他的聊天機器人,主要在這樣幾個方面上進步明顯:

  • 首先,它對用戶實際意圖的理解有了明顯的提升,以前用過類似的聊天機器人,或者自動客服的朋友,應該會經常遇到機器人兜圈子,甚至答非所問的情況,而ChatGPT在這方面有了顯著的提升,大家在實際體驗了之后感覺都非常的明顯;
  • 其次,是非常強的背景關系銜接能力,你不僅能夠問他一個問題,而且還可以通過不斷追加提問的方式,讓它不斷的改進回答內容,最終達到用戶想要的理想效果,
  • 然后,是對知識和邏輯的理解能力,當你遇到某個問題,它不僅只是給一個完整的回答,同時,你對這個問題的各種細節追問,它都能回答出來,

ChatGPT目前暫時還沒有看到與之相關的論文,但是,官網有一篇Instruct GPT和ChatGPT是非常接近的,在官網上也指出了ChatGPT是InstructGPT的兄弟模型,它經過訓練可以按照指示中的說明進行操作并提供詳細的回應,

 這里我們可以看到2個模型的訓練程序非常的相似,文章地址:

  • https://openai.com/research/instruction-following

  • https://openai.com/blog/chatgpt

ChatGPT訓練流程如下所示:

 InstructGPT訓練流程如下所示:

 在OpenAI關于InstructiGPT中的論文中,有可以找到這些直觀優勢的量化分析,

 

InstructGPT對比上一代GPT3:

  • 首先在71%的情況下,InstructGPT生成的回答要比GPT3模型的回答要更加符合訓練人員的喜好,這里提到GPT3是OpenAI的上一代自然語言生成模型,
  • 其次,InstructGPT在回答問題的真實程度上,也會更加可靠,當兩個模型同時被問到他們完全不知道的內容時,InstructGPT只有21%的情況會編造結果,而GPT3就高了,多達到了41%,這里,我們可以發現,即便是最厲害的模型它也有五分之一的概率會胡說八道;
  • 除此之外,InstructGPT在產生有毒回答的概率上也減小了25%,

所以,匯總下來,InstructGPT比上一代模型能夠提供更加真實可靠的回答,并且回答的內容也會遠比上一代更加符合用戶的意愿,

3.如何做到這些提升的呢?

我們要看清楚ChatGPT,為什么可以做到如此出色的效果,就需要我們把視角稍微拉遠一點,看一看這款模型,近幾年的發展歷史,
ChapGPT是OpenAI的另一款模型,它是InstructGPT的兄弟模型,也就是基于InstructGPT做了一些調整,而InstructGPT的上一代是GPT3,再往上一個版本是GPT2,再往上是GPT,那再往前就是Google的那一篇關于transformer的著名論文(https://arxiv.org/pdf/1706.03762.pdf),這里需要提一下的是,同樣是基于transformer結構的,還有Google自家的BERT架構,以及對應的分支,
所以,我們能夠得到這樣一個分支圖,

 

這里,本人能力有限,沒法對每一篇論文分析總結,但是,想提到一些自己在學習的程序中感覺比較有趣的決定和突破,
首先,同樣是transformer架構上分支出來的,BERT和GPT的一大不同,來自于他們transformer具體結構的區別,BERT使用的是transformer的encoder組件,而encoder的組件在計算某個位置時,會關注他左右兩側的資訊,也就是文章的背景關系,而GPT使用的是transformer decoder組件,decoder組件在計算某個位置時,只關注它左側的資訊,也就是文章的上文,

 

我們如果用一個通俗的比喻就是,BERT在結構上對背景關系的理解會更強,更適合嵌入式的表達,也就是完型填空式的任務,而GPT在結構上更適合只有上文,完全不知道下文的任務,而聊天恰好就是這樣的場景,
另一個有趣的突破,來自模型量級上的提升,

 從GPT到GPT2,再到GPT3,OpenAI大力出奇跡,將模型引數從1.17億,提升到15億,然后進一步暴力提升到了1750億個,以至于GPT3比以前同型別的語言模型,引數量增加了10倍以上,

 同時,訓練資料量也從GPT的5GB,增加到GPT2的40GB,再到GPT3的45TB,與此相關的是在方向上(https://arxiv.org/pdf/2005.14165.pdf)

OpenAI沒有追求模型在特定型別任務上的表現,而是不斷的增加模型的泛化能力,同時,GPT3的訓練費用,也到達了驚人的1200萬美元,

那下一個有趣的節點,就達到了今天的主角ChatGPT的兄弟,InstructGPT,從GPT3到InstructGPT的一個有趣改進,來自于引入了人類的反饋,用OpenAI論文的說法是,在InstructGPT之前,大部分大規模語言模型的目標,都是基于上一個輸入片段token,來推測下一個輸入片段,

然而這個目標和用戶的意圖是不一致的,用戶的意圖是讓語言模型,能夠有用并且安全的遵循用戶的指令,那這里的指令instruction,也就是InstructGPT名字的來源,當然,也就呼應的今天ChatGPT的最大優勢,對用戶意圖的理解,為了達到這個目的,他們引入了人類老師,也就是標記人員,通過標記人員的人工標記,來訓練出一個反饋模型,那這個反饋模型,實際上就是一個模仿喜好,用來給GPT3的結果來打分的模型,然后這個反饋模型再去訓練GPT3,之所以沒有讓標記人員,直接訓練GPT3,可能是因為資料量太大的原因吧,

 

所以,這個反饋模型,就像是被抽象出來的人類意志,可以用來激勵GPT3的訓練,那整個訓練方法,就被叫做基于人類反饋的強化學習,至此簡易版的InstructGPT的前世今生就介紹完了,我們來回顧一下OpenAI一直在追求的幾個特點:

  • 首先,是只有上文的decoder結構,這種結構下訓練出來的模型,天然適合問答這種互動方式;
  • 然后,是通用模型,OpenAI一直避免在早期架構和訓練階段,就針對某個特定的行業做調優,這也讓GPT3有著很強的通用能力
  • 最后,是巨量資料和巨量引數,從資訊論的角度來看,這就像深層的語言模型,涵蓋的人類生活中,會涉及的幾乎所有的自然語言和編程語言,當然,這也就極大的提高了個人或者小公司參與的門檻,

既然說到了原理,還有一個方面是前面沒有提及到的,就是連續對話的能力,所以,ChatGPT是如何做到能夠記住對話的背景關系的呢?
這一能力,其實在GPT3時代就已經具備了,具體做法是這樣的,語言模型生成回答的方式,其實是基于一個個的token,這里的token,可以粗略的理解為一個個單詞,所以ChatGPT給你生成一句話的回答,其實是從第一個詞開始,重復把你的問題以及當前生成的所有內容,再作為下一次的輸入,再生成下一個token,直到生成完整的回答,

4.實戰演練

為了更好地理解ChatGPT模型的實際應用,我們可以嘗試使用Hugging Face提供的Transformers庫來構建一個聊天機器人模型,

1.準備資料集

我們可以使用Cornell電影對話資料集來作為ChatGPT模型的訓練資料集,Cornell電影對話資料集包含了超過220,579條對話記錄,每條記錄都有一個問題和一個回答,我們可以將問題和回答組合在一起,形成聊天機器人的訓練樣本,

2.資料預處理

在訓練ChatGPT模型之前,我們需要對資料進行預處理,將文本轉換為數字表示,我們可以使用tokenizer將文本轉換為tokens,并將tokens轉換為模型輸入的數字表示,在使用Hugging Face的Transformers庫中,我們可以使用AutoTokenizer自動選擇適合的tokenizer,根據模型的型別和配置來進行初始化,

以下是對電影對話資料集進行預處理的代碼:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained('distilgpt2')
pad_token_id = tokenizer.pad_token_id
max_length = 512

def preprocess_data(filename):
    with open(filename, 'r', encoding='iso-8859-1') as f:
        lines = f.readlines()

    conversations = []
    conversation = []
    for line in lines:
        line = line.strip()
        if line.startswith('M '):
            conversation.append(line[2:])
        elif line.startswith('E '):
            conversation.append(line[2:])
            if len(conversation) > 1:
                conversations.append(conversation)
            conversation = []

    questions = []
    answers = []
    for conversation in conversations:
        for i in range(len(conversation) - 1):
            questions.append(conversation[i])
            answers.append(conversation[i+1])

    inputs = tokenizer(questions, answers, truncation=True, padding=True, max_length=max_length)

    return inputs, pad_token_id

inputs, pad_token_id = preprocess_data('movie_conversations.txt')

在上述代碼中,我們使用了AutoTokenizer來初始化tokenizer,并指定了最大的序列長度為512,同時,我們也定義了padding token的id,并使用preprocess_data函式來對Cornell電影對話資料集進行預處理,在預處理程序中,我們將每個問題和回答組合在一起,使用tokenizer將文本轉換為tokens,并將tokens轉換為數字表示,我們還設定了padding和truncation等引數,以使得所有輸入序列長度相同,

3.訓練模型

在對資料集進行預處理后,我們可以使用Hugging Face的Transformers庫中提供的GPT2LMHeadModel類來構建ChatGPT模型,GPT2LMHeadModel是一個帶有語言模型頭的GPT-2模型,用于生成與前面輸入的文本相關的下一個詞,

以下是使用GPT2LMHeadModel訓練ChatGPT模型的代碼:

from transformers import GPT2LMHeadModel, Trainer, TrainingArguments

model = GPT2LMHeadModel.from_pretrained('distilgpt2')
model.resize_token_embeddings(len(tokenizer))

training_args = TrainingArguments(
    output_dir='./results',
    num_train_epochs=3,
    per_device_train_batch_size=4,
    save_total_limit=2,
    save_steps=1000,
    logging_steps=500,
    evaluation_strategy='steps',
    eval_steps=1000,
    load_best_model_at_end=True,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=inputs['input_ids'],
    data_collator=lambda data: {'input_ids': torch.stack(data)},
)

trainer.train()

在上述代碼中,我們首先使用GPT2LMHeadModel來初始化ChatGPT模型,并調整Embedding層的大小以適應我們的tokenizer,接下來,我們定義了TrainingArguments來配置訓練引數,其中包括了訓練的輪數、每批次的大小、模型保存路徑等資訊,最后,我們使用Trainer類來訓練模型,在這里,我們將輸入資料傳遞給train_dataset引數,并使用一個data_collator函式將輸入資料打包成一個批次,

4.生成文本

在訓練完成后,我們可以使用ChatGPT模型來生成文本,在Hugging Face的Transformers庫中,我們可以使用pipeline來實作文本生成,

以下是使用ChatGPT模型生成文本的代碼:

from transformers import pipeline

generator = pipeline('text-generation', model=model, tokenizer=tokenizer)

def generate_text(prompt):
    outputs = generator(prompt, max_length=1024, do_sample=True, temperature=0.7)
    generated_text = outputs[0]['generated_text']
    return generated_text

generated_text = generate_text('Hello, how are you?')
print(generated_text)

在上述代碼中,我們首先使用pipeline函式來初始化一個文本生成器,其中指定了ChatGPT模型和tokenizer,接下來,我們定義了generate_text函式來使用生成器生成文本,在這里,我們傳入一個prompt字串作為生成的起始點,并使用max_length引數來指定生成文本的最大長度,使用do_sample和temperature引數來控制文本的隨機性和流暢度,

5.總結

ChatGPT是一個強大的自然語言生成模型,可以用于生成對話、推薦、文本摘要等多種任務,在本文中,我們介紹了ChatGPT的原理、實作流程和應用場景,并提供了Cornell電影對話資料集的預處理和ChatGPT模型的訓練代碼,通過使用Hugging Face的Transformers庫,我們可以輕松地構建和訓練ChatGPT模型,并使用pipeline來生成文本,希望本文能夠幫助讀者更好地理解ChatGPT,以及如何應用自然語言生成技術來解決實際問題,

因為,GPT3 API里面單次互動最多支持4000多個token(https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them)

 因此,我猜測ChatGPT的背景關系大概也是4000個token左右,

聯系方式:
郵箱:[email protected]
Twitter:https://twitter.com/smartloli
QQ群(Hadoop - 交流社區1):424769183
QQ群(Kafka并不難學): 825943084
溫馨提示:請大家加群的時候寫上加群理由(姓名+公司/學校),方便管理員審核,謝謝!

熱愛生活,享受編程,與君共勉!


公眾號:


作者:哥不是小蘿莉 [關于我][犒賞]

出處:http://www.cnblogs.com/smartloli/

轉載請注明出處,謝謝合作!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551526.html

標籤:其他

上一篇:AtCoder Beginner Contest 300

下一篇:返回列表

標籤雲
其他(158346) Python(38110) JavaScript(25398) Java(18011) C(15221) 區塊鏈(8261) C#(7972) AI(7469) 爪哇(7425) MySQL(7153) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5870) 数组(5741) R(5409) Linux(5334) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1964) Web開發(1951) HtmlCss(1929) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 基于ChatGPT用AI實作自然對話

    1.概述 ChatGPT是當前自然語言處理領域的重要進展之一,通過預訓練和微調的方式,ChatGPT可以生成高質量的文本,可應用于多種場景,如智能客服、聊天機器人、語音助手等。本文將詳細介紹ChatGPT的原理、實戰演練和流程圖,幫助讀者更好地理解ChatGPT技術的應用和優勢。 2.內容 在當今快 ......

    uj5u.com 2023-05-01 07:26:08 more
  • AtCoder Beginner Contest 300

    A - N-choice question (abc300 a) 題目大意 給定一個元素互不相同的陣列$c$和 $a,b$,找到 $i$使得 $c_i = a + b$ 解題思路 直接for回圈尋找即可。 神奇的代碼 ```cpp #include using namespace std; usin ......

    uj5u.com 2023-04-30 07:50:49 more
  • 中國剩余定理(CRT)學習筆記

    約定 $A\perp B$ 表示 $\gcd(A,B)=1$。 $A\mid B$ 表示 $B\equiv 0\pmod{A}(A\neq0)$。 引入 考慮以下這道題: 有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。 問物幾何?—— 《孫子算經》 也就是說,求出下列關于 $x$ 方程組的 ......

    uj5u.com 2023-04-30 07:50:44 more
  • Vulnhub之GreenOptics靶機詳細測驗程序

    GreenOptics 識別目標主機IP地址 ─(kali?kali)-[~/Vulnhub/GreenOptic] └─$ sudo netdiscover -i eth1 -r 192.168.56.0/24 Currently scanning: Finished! | Screen View ......

    uj5u.com 2023-04-30 07:50:40 more
  • 一文帶你了解區塊鏈中15種共識演算法

    所有主要的區塊鏈共識演算法解釋 區塊鏈技術席卷全球,提供了一種去中心化且安全的資訊存盤和傳輸方式。它還徹底改變了交易的執行方式,隨之而來的是廣泛的共識演算法。在這里,共識演算法在確保區塊鏈網路的完整性方面發揮著關鍵作用。在本文中,我們將探討所有主要型別的區塊鏈共識演算法、它們的含義、優點、缺點,以及為什么它 ......

    uj5u.com 2023-04-30 07:50:19 more
  • Spring RCE漏洞

    Spring RCE漏洞 一、漏洞概況與影響 CVE編號:CVE-2022-22965 受影響范圍: Spring Framework 5.3.X < 5.3.18 Spring Framework 5.2.X < 5.2.20 JDK >=9 使用Tomcat中間件且開啟了Tomcat日志記錄的應 ......

    uj5u.com 2023-04-30 07:50:04 more
  • xss-labs靶場

    在線XSS-labs靶場:https://xssaq.com/yx/ 靶場搭建 靶場是直接使用docker搭建的 docker pull vulfocus/xss-labs 啟動靶場 docker run -p 8005:80 vulfocus/xss-labs 瀏覽器訪問IP+8005 windo ......

    uj5u.com 2023-04-30 07:49:11 more
  • traefik網關的https上游配置

    老牌網關traefik。因為沒有中文網站和社區支持,自己研究很費勁。
    https上游如何配置,沒有一個可用的。我把經驗總結下來,給大家使用。 ......

    uj5u.com 2023-04-30 07:48:23 more
  • 解密Prompt系列6. lora指令微調扣細節-請冷靜,1個小時真不夠~

    上一章介紹了如何基于APE+SELF自動化構建指令微調樣本。這一章咱就把微調跑起來,主要介紹以Lora為首的低引數微調原理,環境配置,微調代碼,以及大模型訓練中顯存和耗時優化的相關技術細節 ......

    uj5u.com 2023-04-30 07:48:10 more
  • Midjourney 創建私人畫圖機器人(保姆級教程)

    本教程收集于:AIGC從入門到精通教程匯總 之前給大家介紹過了Midjourney 的注冊教程:AI繪畫:Midjourney 注冊(保姆級教程) 也有Stable Diffusion(開源)的本地搭建教程:AI數字繪畫:stable-diffusion 本地部署教程 你是不是遇到以下問題: 1.M ......

    uj5u.com 2023-04-30 07:47:20 more