Qwen2-VL:提升視覺語言模型對任意分辨率世界的感知能力

溫馨提示:
本篇文章已同步至"AI專題精講" Qwen2-VL:提升視覺語言模型對任意分辨率世界的感知能力

摘要

我們提出了 Qwen2-VL 系列,這是對先前 Qwen-VL 模型的重大升級,重新定義了視覺處理中傳統的預設分辨率方法。Qwen2-VL 引入了樸素動態分辨率機制(Naive Dynamic Resolution),使模型能夠動態地處理不同分辨率的圖像并生成不同數量的視覺 token。這一方法使模型能夠生成更高效且更準確的視覺表示,更加貼近人類的感知過程。該模型還整合了多模態旋轉位置編碼(Multimodal Rotary Position Embedding, M-RoPE),促進文本、圖像和視頻之間位置信息的有效融合。我們采用統一的圖像與視頻處理范式,增強了模型的視覺感知能力。為探索大型多模態模型的潛力,Qwen2-VL 系列研究了大規模視覺語言模型(LVLM)的擴展規律。通過擴大模型規模(提供 2B、8B 和 72B 參數版本)及訓練數據量,Qwen2-VL 系列實現了極具競爭力的性能。值得注意的是,Qwen2-VL-72B 模型在多個多模態基準測試中取得了與 GPT-4o 和 Claude3.5-Sonnet 相當的成績,超越了其他通用模型。代碼地址:https://github.com/QwenLM/Qwen2-VL

1 引言

在人工智能領域,大型視覺語言模型(Large Vision-Language Models, LVLM)代表著一次重大飛躍,它們基于傳統大語言模型在文本處理方面的強大能力,拓展至圖像、音頻和視頻等更廣泛的數據模態。這一能力的擴展使得 LVLM 成為解決各類現實問題的不可或缺工具。LVLM 因其能夠將廣泛而復雜的知識壓縮為可用表征的獨特能力,正推動更加全面的認知系統的發展。通過整合多樣的數據形式,LVLM 力求更貼近人類感知和交互的復雜方式,從而更準確地再現人類理解世界的方式。

近期 LVLM 的發展突飛猛進(Li et al., 2023c; Liu et al., 2023b; Dai et al., 2023; Zhu et al., 2023; Huang et al., 2023a; Bai et al., 2023b; Liu et al., 2023a; Wang et al., 2023b; OpenAI., 2023; Team et al., 2023),這些模型普遍采用視覺編碼器 → 跨模態連接器 → LLM 的通用架構。這一設置結合以 next-token 預測為主要訓練目標,再加上高質量數據集的可用性(Liu et al., 2023a; Zhang et al., 2023; Chen et al., 2023b; Li et al., 2023b),推動了該領域的快速進步。其他推動因素還包括更大規模的模型架構(Alayrac et al., 2022)、更高分辨率的圖像(Li et al., 2023a,d)、以及先進技術如專家混合模型(Mixture-of-Experts, MoE)(Wang et al., 2023b; Ye et al., 2023b)、模型集成(Lin et al., 2023)和更復雜的視覺-文本連接器(Ye et al., 2023a),它們都顯著增強了 LVLM 對復雜視覺和文本信息的處理能力。

在這里插入圖片描述

然而,當前的大型視覺語言模型(LVLM)通常受限于固定的圖像輸入尺寸。標準的 LVLM 通常將輸入圖像編碼為固定分辨率(例如 224×224),通常通過下采樣或上采樣圖像的方式實現(Zhu 等,2023;Huang 等,2023a),或采用“縮放-填充”(scale-then-padding)的方法(Liu 等,2023b,a)。盡管這種“一刀切”的策略便于在統一分辨率下處理圖像,但也限制了模型在不同尺度上捕捉信息的能力,特別是在處理高分辨率圖像時會導致細節信息的顯著丟失。因此,這類模型在感知尺度和細節方面無法達到人類視覺系統的敏感度。

此外,大多數 LVLM 傾向于依賴靜態凍結的 CLIP 風格視覺編碼器(Radford 等,2021),這引發了一個問題,即這種預訓練模型所生成的視覺表示是否足夠豐富,尤其是在需要復雜推理和處理圖像中精細細節的任務中。近期的研究(Bai 等,2023b;Ye 等,2023a)試圖通過在 LVLM 訓練過程中微調視覺 transformer(ViT)來緩解這些限制,實踐表明這一方法確實能帶來性能提升。為了進一步增強模型對多種分辨率的適應能力,我們在 LVLM 訓練過程中引入了動態分辨率訓練策略。具體而言,我們在 ViT 中采用了二維旋轉位置編碼(2D RoPE),從而使模型能夠更好地捕捉跨空間尺度的信息。

當處理視頻內容時,視頻本質上是一系列幀的序列,許多現有模型仍將其視為一個獨立的模態。然而,理解現實世界的動態本質——如視頻中所體現的變化——對于模型理解現實復雜性至關重要。與天然一維的文本不同,現實世界是三維存在的。而當前模型中采用的一維位置編碼顯著限制了其對三維空間和時間動態的建模能力。為彌補這一差距,我們提出了多模態旋轉位置編碼(Multimodal Rotary Position Embedding, MRoPE),它采用獨立的組件分別表示時間信息和空間信息。這使得模型能夠自然地理解動態內容(例如視頻或流媒體數據),從而提升其理解和交互現實世界的能力。

在這里插入圖片描述

此外,與大型語言模型(LLM)的擴展進展相比,當前的大型視覺語言模型(LVLM)在訓練數據量和模型參數規模的擴展方面仍處于探索初期。對于 LVLM 的擴展規律(scaling laws)——即模型規模和數據量的增長如何影響性能——的研究仍是一個開放且極具潛力的領域。

在本研究中,我們推出了 Qwen 家族中最新的大型視覺語言模型系列:Qwen2-VL 系列,包括三個開放權重的模型,參數規模分別為 20 億、80 億和 720 億。如下圖 1 所示,Qwen2-VL 的關鍵進展包括:

  • 在多種分辨率與長寬比下具備最先進的理解能力:Qwen2-VL 在多個視覺基準測試上取得領先成績,包括 DocVQA、InfoVQA、RealWorldQA、MTVQA、MathVista 等。
  • 對長時長視頻(超過 20 分鐘)的理解能力:Qwen2-VL 能夠理解長度超過 20 分鐘的視頻,顯著提升其在基于視頻的問答、對話、內容創作等任務中的表現。
  • 具備強大的設備操作代理能力:憑借先進的推理與決策能力,Qwen2-VL 可集成至手機、機器人等設備中,實現基于視覺輸入和文本指令的自主操作。
  • 多語言支持:為服務全球用戶,除了支持英文和中文外,Qwen2-VL 還支持圖像內的多語言上下文理解,包括大多數歐洲語言、日語、韓語、阿拉伯語、越南語等。

2 方法

Qwen2-VL 系列包含三種規模的模型,分別為 Qwen2-VL-2B、Qwen2-VL-7B 和 Qwen2-VL-72B。表 1 展示了其超參數與關鍵信息。值得注意的是,Qwen2-VL 在所有不同規模的 LLM 中均使用一個擁有 6.75 億參數的 Vision Transformer(ViT),從而確保 ViT 的計算負擔不會隨著語言模型規模的變化而變化。

2.1 模型結構

圖 2 展示了 Qwen2-VL 的整體結構。我們保留了 Qwen-VL(Bai et al., 2023b)框架,該框架集成了視覺編碼器和語言模型。為了適配不同規模的模型,我們采用了約 6.75 億參數的 Vision Transformer(ViT)(Dosovitskiy et al., 2021),可處理圖像與視頻輸入。在語言處理部分,我們選用了性能更強的 Qwen2 系列語言模型(Yang et al., 2024)。

為了進一步提升模型對視頻中視覺信息的感知與理解能力,我們引入了若干關鍵升級:

在這里插入圖片描述

Naive Dynamic Resolution

Qwen2-VL 的一個關鍵架構改進是引入了 Naive Dynamic Resolution 支持(Dehghani et al., 2024)。與 Qwen-VL 不同,Qwen2-VL 現在可以處理任意分辨率的圖像,并動態地將其轉換為可變數量的視覺 token1。為支持這一特性,我們對 ViT 進行了如下修改:

  • 移除原始的絕對位置嵌入(absolute position embedding)
  • 引入了 2D-RoPE(Su et al., 2024; Su, 2021),用于捕捉圖像中的二維位置信息

在推理階段,不同分辨率的圖像會被打包成一個統一的序列,并通過控制打包后的序列長度來限制 GPU 的顯存占用。

為了進一步減少每張圖像生成的視覺 token 數量,我們在 ViT 之后添加了一個簡單的 MLP 層,用于將相鄰的 2×2 token 壓縮為一個 token。壓縮后的視覺 token 以特殊 token <|vision_start|><|vision_end|> 開始和結束。

例如,假設圖像分辨率為 224 × 224,ViT 的 patch_size = 14,則編碼后原本會生成 256 個 token,經壓縮后將減少為約 66 個 token 輸入到 LLM 中。

多模態旋轉位置嵌入(M-RoPE)

另一個關鍵的架構創新是提出了 Multimodal Rotary Position Embedding(M-RoPE)。與 LLM 中傳統的一維 RoPE(1D-RoPE)只能編碼一維位置信息不同,M-RoPE 能夠有效建模多模態輸入的多維位置信息。

其核心思想是:將原始的旋轉位置嵌入拆分為三個維度:

  • 時間維(temporal)
  • 高度維(height)
  • 寬度維(width)

具體而言:

  • 對于文本輸入:三者使用相同的位置 ID,因此 M-RoPE 等價于普通的一維 RoPE。
  • 對于圖像輸入:每個視覺 token 的 時間維 ID 保持不變,而 高度與寬度維 ID 則依據其在圖像中的位置進行分配。
  • 對于視頻輸入:模型將視頻視作幀序列每一幀的時間 ID 遞增,其高度與寬度維 ID 分配方式與圖像一致。
  • 多模態輸入情形下:每種模態的位置編號通過將前一個模態的最大位置 ID 加一來初始化,防止沖突。

如圖 3 所示,M-RoPE 不僅強化了位置建模能力,還降低了圖像和視頻的 position ID 數值范圍,這使得模型在推理時能夠更好地外推至更長的序列。

在這里插入圖片描述

Unified Image and Video Understanding
Qwen2-VL 采用了一種混合訓練策略,結合了圖像和視頻數據,確保其在圖像理解與視頻理解方面均具備能力。為了盡可能完整地保留視頻信息,我們以每秒兩幀的速率對每個視頻進行采樣。此外,我們使用了深度為 2 的 3D 卷積(Carreira and Zisserman, 2017)來處理視頻輸入,使模型能夠處理 3D tubes 而非 2D patches,從而在不增加序列長度的情況下處理更多的視頻幀(Arnab et al., 2021)。為保持一致性,每張圖像被視為兩幀完全相同的幀。為平衡處理長視頻的計算開銷與整體訓練效率,我們動態調整每幀視頻的分辨率,限制每段視頻的總 token 數量為 16384。該訓練方法在模型對長視頻的理解能力與訓練效率之間取得了平衡。

2.2 訓練

參考 Qwen-VL(Bai et al., 2023b),我們采用三階段訓練方法。在第一階段,我們專注于訓練 Vision Transformer(ViT)組件,使用大量圖文對語料提升 Large Language Model(LLM)中的語義理解能力。在第二階段,我們解凍全部參數,使用更廣泛的數據進行訓練,以實現更全面的學習。在最后階段,我們凍結 ViT 參數,僅使用指令數據集對 LLM 進行精調。模型預訓練所使用的數據集非常多樣,包含圖文對、光學字符識別(OCR)數據、交錯圖文文章、視覺問答數據集、視頻對話以及圖像知識數據集。我們主要的數據來源包括清洗后的網頁、開源數據集和合成數據。本次預訓練的數據知識截止日期為 2023 年 6 月。這種多樣化的數據組成對構建強大的多模態理解能力起到了關鍵作用。

在初始預訓練階段,Qwen2-VL 接觸了約 6000 億個 token 的語料。Qwen2-VL 的 LLM 組件以 Qwen2(Yang et al., 2024)中的參數進行初始化,而視覺編碼器則初始化為來源于 DFN 的 ViT。然而,原始 DFN 中 ViT 的固定位置嵌入(Fang et al., 2023)被 RoPE-2D 替代。該預訓練階段主要聚焦于學習圖文關系、通過 OCR 識別圖像中的文本內容以及圖像分類任務。這樣的基礎訓練有助于模型建立起對核心視覺-文本關聯關系的穩健理解與對齊能力。

第二階段的預訓練是一次顯著的進階,新增了 8000 億個 token 的圖像相關數據。在這一階段,引入了更多混合圖文內容,使模型能夠更細致地理解視覺信息與文本信息之間的交互關系。視覺問答數據集的加入進一步提高了模型回答圖像相關問題的能力。此外,多任務數據集的引入對于訓練模型具備同時處理多種任務的能力至關重要,這種能力在面對復雜的現實數據時尤為重要。與此同時,純文本數據依然在模型語言能力的維持和提升中扮演關鍵角色。

在整個預訓練過程中,Qwen2-VL 共處理了累計 1.4 萬億個 token。這些 token 包括文本 token 以及圖像 token。然而,在訓練過程中,我們僅對文本 token 提供監督。這種對大量多樣語言與視覺場景的接觸確保模型能夠深入理解視覺與文本信息之間復雜的關系,從而為各種多模態任務奠定了堅實基礎。

在指令微調階段,我們采用 ChatML(OpenAI, 2024)格式構造指令跟隨數據。該數據集不僅包含純文本對話數據,也包括多模態對話數據。多模態部分涵蓋圖像問答、文檔解析、多圖比較、視頻理解、視頻流對話以及基于 agent 的交互。我們這種全面的數據構建方法旨在提升模型對各種模態下指令的理解與執行能力。通過引入多樣化的數據類型,我們希望打造一個更具通用性和穩健性的語言模型,使其不僅能夠勝任傳統的文本交互任務,還能處理復雜的多模態任務。

2.2.1 數據格式

與 Qwen-VL 保持一致,Qwen2-VL 同樣使用特殊 token 來區分視覺輸入與文本輸入。在圖像特征序列的起始與結束處插入 <|vision_start|><|vision_end|> token,以標記圖像內容的邊界。

Dialogue Data. 在對話格式方面,我們使用 ChatML 格式構建指令微調數據集,其中每輪交互的內容使用兩個特殊 token(<|im_start|><|im_end|>)進行標記,以便實現對話的終止。藍色標記的部分表示有監督的數據區域。
在這里插入圖片描述

Visual Grounding. 為了賦予模型視覺定位(visual grounding)能力,邊界框的坐標被歸一化到 [0,1000)[0, 1000) 范圍內,并表示為 “(Xtop left, Ytop left), (Xbottom right, Ybottom right)” 的形式。使用 <|box_start|><|box_end|> token 來標記邊界框文本的起始與結束。為了準確地將邊界框與其對應的文本描述關聯起來,我們引入 <|object_ref_start|><|object_ref_end|> token,用于指示邊界框所引用的內容,從而使模型能夠有效地理解并生成特定區域的精確描述。

在這里插入圖片描述

Visual Agent. 為了將 Qwen2-VL 發展為通用的 VL-Agent,我們將各種代理任務,如 UI 操作、機器人控制、游戲和導航,視為順序決策問題,使得 Qwen2-VL 能夠通過多步驟的動作執行來完成任務。對于每個任務,我們首先定義一組允許的動作和函數調用的關鍵字模式(下劃線)(Qwen Team, 2024)。然后,Qwen2-VL 分析觀察結果,進行推理和規劃,執行選擇的動作,并與環境互動以獲取新的觀察數據。這個過程會反復循環,直到任務成功完成。通過整合各種工具并利用大型視覺語言模型(LVLMs)的視覺感知能力,Qwen2-VL 能夠迭代地執行涉及現實世界視覺交互的日益復雜的任務。
在這里插入圖片描述

2.3 多模態模型基礎設施

Qwen2-VL 模型是在阿里巴巴云的 PAI-Lingjun 智能計算服務(AlibabaCloud, 2024c)上進行訓練的,利用其可擴展的計算能力、自動恢復和延遲檢測功能。

存儲。
我們使用阿里巴巴云的超高速 CPFS(Cloud Parallel File Storage)(Alibaba-Cloud, 2024a)來構建 Qwen2-VL 的預訓練和后訓練存儲系統。我們將文本數據和視覺數據存儲解耦。文本數據簡單地存儲在 CPFS 上,并使用 mmap 進行高效訪問。對于視覺數據,我們使用阿里巴巴云的 OSS(Object Storage Service)(Alibaba-Cloud, 2024b)進行持久化存儲。在訓練過程中,我們通過 OSS 的 Python 客戶端并發訪問視覺數據,并調整并發和重試參數,以避免達到 QPS(每秒查詢數)限制。我們還發現視頻數據解碼是一個主要瓶頸,尤其是對于長視頻。在多次嘗試使用開源軟件(FFmpeg-Developers, 2024)和內部軟件失敗后,我們選擇了緩存解碼技術。檢查點保存每個 GPU 的優化器和模型狀態到 CPFS。

并行性
我們使用結合了數據并行性(DP)(Li et al., 2020)、張量并行性(TP)(Krizhevsky et al., 2012;Shoeybi et al., 2019)和流水線并行性(PP)(Huang et al., 2019;Narayanan et al., 2021;Lamy-Poirier, 2023)的 3D 并行性來擴展 Qwen2-VL 模型訓練。我們還利用 deepspeed 的 zero-1 冗余優化器(Rajbhandari et al., 2020)對狀態進行分片,以節省內存。我們使用了帶有選擇性檢查點激活(Chen et al., 2016)的序列并行性(SP)(Korthikanti et al., 2023)來減少內存使用。當啟用 TP 訓練時,我們始終將視覺編碼器和大型語言模型一起分片,而不是視覺合并器,因為它的參數較少。我們發現 TP 訓練會因卷積運算符的非確定性行為導致不同的模型共享權重。我們通過對共享權重進行離線歸約來解決這個問題,從而避免了額外的全歸約通信步驟。這種方法對性能的影響最小。我們為 Qwen2-VL 72B 訓練利用了 1F1B PP(Narayanan et al., 2021)。我們將視覺編碼器、視覺適配器和多個 LLM 的解碼器層合并為一個階段,并均勻分配其余的解碼器層。請注意,視覺和文本序列長度對于每個數據點是動態的。在啟動 1F1B 過程之前,我們廣播動態序列長度,并使用批次索引訪問形狀信息。我們還實現了交錯 1F1B PP(Narayanan et al., 2021),但發現它比標準的 1F1B 設置更慢。

軟件
我們使用 PyTorch(Paszke et al., 2019;Ansel et al., 2024)版本 2.1.2 和 CUDA 11.8(Nvidia, 2024b)進行訓練。此外,我們利用 flash-attention(Dao et al., 2022;Dao, 2024;Shah et al., 2024)來高效訓練視覺編碼器和 LLM。我們還使用了融合運算符(Nvidia, 2024a),如 LayerNorm(Ba et al., 2016)、RMSNorm(Zhang 和 Sennrich, 2019)和 Adam(Loshchilov 和 Hutter, 2019)。除此之外,我們在訓練過程中利用了矩陣乘法的通信與計算重疊。

3 實驗

在本節中,我們首先通過在多種視覺基準上的比較分析評估模型的性能,展示我們方法的優勢。接著,我們詳細檢驗了特定能力,包括通用視覺感知、文檔理解、多語言圖像識別、視頻理解和代理能力。最后,我們呈現了一個消融研究,探討我們方法中的幾個關鍵組成部分。
在這里插入圖片描述

溫馨提示:
閱讀全文請訪問"AI深語解構" Qwen2-VL:提升視覺語言模型對任意分辨率世界的感知能力

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89332.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89332.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89332.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++類模版與友元

全局函數類內實現-直接在類內聲明友元即可全局函數類外實現-需要提前讓編譯器知道全局函數的存在#include <iostream> using namespace std;//通過全局函數來打印Person的信息template<class T1,class T2> class Person{//全局函數&#xff0c;類內實現friend void…

Linux Java環境配置

1.進入java官網&#xff0c;點擊Java archive Java Downloads | Oracle 中國https://www.oracle.com/cn/java/technologies/downloads/ 2.然后下滑選擇你要安裝的java版本&#xff0c;這里我選擇的是java8 3.依據系統架構選擇版本安裝&#xff0c;x86&#xff0c;x64&#xf…

flutter app內跳轉到其他安卓 app的方法

flutter 內的關鍵代碼導包&#xff1a;url_launcher: ^6.3.1跳轉邏輯&#xff1a;onPressed: () async {await launchUrl(Uri.parse(demoname://));},安卓內的關鍵代碼<intent-filter><action android:name"android.intent.action.VIEW" /><category …

醫療資質OCR智能審核:讓合規管理更高效、更精準

在醫療行業&#xff0c;資質證件的審核是確保機構合規運營的關鍵環節。從醫療機構執業許可證到醫師資格證&#xff0c;從藥品經營許可證到醫療器械注冊證&#xff0c;傳統人工審核方式效率低下且容易出錯。現在&#xff0c;醫療資質OCR智能審核解決方案正在重塑行業標準&#x…

利用 Spring 的 `@Scheduled` 注解結合簡單的狀態跟蹤實現空閑檢測方案

一種基于定時任務和簡單狀態跟蹤的方法: 實現思路 記錄用戶的最后活動時間:每當用戶進行某些操作(如點擊、請求等),更新其最后活動的時間戳。 使用定時任務檢查用戶是否空閑:設置一個后臺任務,定期檢查每個用戶的最后活動時間,判斷是否超過了設定的空閑時間閾值。 執行…

如何在 Ubuntu 上安裝 Microsoft Edge 瀏覽器?

Microsoft Edge 是 Microsoft 在2015年開發的跨平臺瀏覽器&#xff0c;最初是建立在他們自己的瀏覽器引擎和 Chakra JavaScript 引擎之上的&#xff0c;此瀏覽器可防止惡意網站和下載文件。 本文將幫助您在 Ubuntu 系統上安裝 Microsoft Edge 瀏覽器。 1: 下載 Edge Browser …

16路串口光纖通信FPGA項目實現指南 - 第二部分(下)

16路串口光纖通信FPGA項目實現指南 - 第二部分&#xff08;下&#xff09; 五、核心控制邏輯實現&#xff08;接收部分&#xff09; 5.4 數據接收控制邏輯 // 接收數據寄存邏輯 reg rs422_rx_valid; // 接收數據有效信號 reg [15:0] rs422_rx_data; // 接收數據寄存器…

前后端分離項目的完整部署(Jenkins自動化部署)

人工部署方式&#xff0c;參考文章&#xff1a; 前后端分離項目的完整部署&#xff08;人工部署&#xff09;-CSDN博客 目標 在Windows操作系統上&#xff0c;使用Jenkins完成源代碼的自動拉取、編譯、打包、發布工作。 項目背景 前端使用vue&#xff0c;程序打包后為dist目…

Python設計模式深度解析:裝飾器模式(Decorator Pattern)完全指南

Python設計模式深度解析&#xff1a;裝飾器模式&#xff08;Decorator Pattern&#xff09;完全指南前言什么是裝飾器模式&#xff1f;裝飾器模式的核心思想Python函數裝飾器&#xff1a;從基礎到高級基礎函數裝飾器高級函數裝飾器實現GUI裝飾器模式&#xff1a;動態界面增強Tk…

JVM--虛擬線程

首先了解一個理念&#xff1a;線程與 OS 線程 1:1 綁定在傳統 Java 線程&#xff08;平臺線程&#xff09;模型中&#xff1a;每個 Java 線程直接對應一個操作系統級別的線程操作系統負責調度這些線程線程的創建、管理和調度都由操作系統內核處理這種模型稱為 1:1 線程模型&…

掌握系統設計的精髓:12個核心設計模式的通俗解讀

在構建復雜且高可用的軟件系統時&#xff0c;僅僅了解編程語言和算法是不夠的。真正的挑戰在于如何設計出能夠應對并發、故障、擴展等各種問題的健壯架構。系統設計模式正是前輩們在無數實踐中提煉出的智慧結晶&#xff0c;它們是解決常見系統問題的“最佳實踐”。 本文將深入淺…

概率論與數理統計(二)

事件的概率 概率&#xff1a;可能性的大小 古典概率模型&#xff1a; 1&#xff09;有限個樣本點 2&#xff09;等可能性 P(A)A中包含的基本事件數基本事件總和 P(A) \frac{A中包含的基本事件數}{基本事件總和} P(A)基本事件總和A中包含的基本事件數? 頻率與概率 nnn 次實驗…

新型eSIM攻擊技術可克隆用戶資料并劫持手機身份

eSIM技術存在重大安全漏洞研究人員發現eSIM技術中存在一個關鍵漏洞&#xff0c;攻擊者可利用該漏洞克隆移動用戶資料并劫持手機身份。AG安全研究團隊宣布&#xff0c;他們成功攻破了采用GSMA消費者證書的Kigen eUICC&#xff08;嵌入式通用集成電路卡&#xff09;安全防護&…

langchain教程2:更加高級和靈活的Prompt模板

文章目錄 prompt模板 對話Prompt模板 函數大師 使用jinja2與f-string實現提示詞模板格式化 組合式提示詞模板 prompt模板 from langchain.prompts import PromptTemplateprompt = PromptTemplate.from_template("你是一個{name},幫我起一個具有{country}特色的{gender}名…

UE5使用Motion Warping有什么用?

在 UE5 中&#xff0c;Motion Warping 是一套用于「動態調整根運動動畫」的系統插件&#xff0c;它能讓帶有根運動&#xff08;Root Motion&#xff09;的動畫根據游戲運行時的環境自動變形&#xff08;Warp&#xff09;&#xff0c;以更精準地貼合目標位置或目標方向&#xff…

類模版的相關案例

案例實現&#xff1a;實現一個通用的數組類&#xff0c;要求如下&#xff1a;可以對內置數據類型以及自定義數據類型的數據進行存儲將數組中的數據存儲到堆區構造函數中可以傳入數組的容量提供對應的拷貝構造函數以及operator防止淺拷貝問題提供尾插法和尾刪法對數組中的數據進…

服務器端安全檢測與防御技術概述

一、服務器安全風險1.不必要的訪問&#xff08;如只提供HTTP服務&#xff09;--應用識別控制2.公網發起IP或端口掃描、DDOS攻擊等--防火墻3.漏洞攻擊&#xff08;針對服務器操作系統等&#xff09;--IPS4.根據軟件版本的已知漏洞進行攻擊&#xff0c;口令暴力破解、獲取用戶權限…

前端性能與可靠性工程系列: 渲染、緩存與關鍵路徑優化

前端性能與可靠性工程系列: 渲染、緩存與關鍵路徑優化 第一部分:揭秘瀏覽器 - 關鍵渲染路徑 (CRP) 關鍵渲染路徑 (Critical Rendering Path - CRP) 是指瀏覽器從接收到最初的 HTML、CSS 和 JavaScript 字節,到最終將它們渲染成可見像素所必須經過的一系列步驟。我們的目標,…

基于CentOS的分布式GitLab+Jenkins+Docker架構:企業級CI/CD流水線實戰全記錄

引言&#xff1a;從單機到分布式容器架構的演進在傳統Web應用部署中&#xff0c;我們常常面臨環境不一致、部署效率低下等問題。我曾經維護過一個需要手動在5臺服務器上重復部署的游戲項目&#xff0c;每次發布都如同走鋼絲。本文將詳細分享如何基于CentOS系統&#xff0c;構建…

JVM——為什么Java8移除了永久代(PermGen)并引入了元空間(Metaspace)?

Java8移除永久代并引入元空間&#xff0c;主要是為了解決 PermGen 固定大小、容易導致內存溢出、GC 效率低的問題。元空間使用本地內存&#xff0c;具備更靈活的內存分配能力&#xff0c;提升了垃圾收集和內存管理的效率。 PermGen 的局限性 ①固定大小:永久代的內存空間大小在…