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

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)及DeepStack核心思想概述 原創(chuàng)

發(fā)布于 2025-9-25 10:56
瀏覽
0收藏

首先從源碼角度看Qwen3VL的改進(jìn),核心圍繞增強(qiáng)多模態(tài)融合深度(DeepStack)、優(yōu)化視覺特征處理、提升時(shí)序建模精度(視頻時(shí)間戳編碼)以及精細(xì)化歸一化設(shè)計(jì)(文本專用RMSNorm),整體更注重多模態(tài)任務(wù)中的特征對(duì)齊與深層交互。然后概述DeepStack用于多模態(tài)大模型的核心思想。

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)

代碼側(cè)改動(dòng)如下:

1.??hidden_act="silu"??? -> ??hidden_act="gelu_pytorch_tanh"??

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)及DeepStack核心思想概述-AI.x社區(qū)

2.Qwen3VLProcessor引入??Qwen3VLVideoProcessor??,更加適配視頻處理

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)及DeepStack核心思想概述-AI.x社區(qū)

3.視覺塊歸一化層調(diào)整

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)及DeepStack核心思想概述-AI.x社區(qū)

  • Qwen2.5VL:視覺塊(??Qwen2_5_VLVisionBlock???)使用??Qwen2RMSNorm??作為歸一化層(一種RMSNorm變體)。
  • Qwen3VL:視覺塊(??Qwen3VLVisionBlock???)改用??nn.LayerNorm??(標(biāo)準(zhǔn)層歸一化)。這一調(diào)整可能是為了更好地適配視覺特征的分布特性,提升訓(xùn)練穩(wěn)定性或特征表達(dá)能力。

4.引入DeepStack多模態(tài)融合機(jī)制

  • Qwen3VL在文本模型(??Qwen3VLTextModel??)中新增了DeepStack機(jī)制(DeepStack機(jī)制能讓視覺信息更深度地參與文本解碼過程,提升多模態(tài)理解的連貫性。),通過??_deepstack_process???方法將視覺特征(??deepstack_visual_embeds??)融入解碼器的多個(gè)隱藏層。在解碼器層的前向傳播中,會(huì)在指定層將視覺特征疊加到對(duì)應(yīng)位置的文本隱藏狀態(tài)上:

# Qwen3VLTextModel.forward
if deepstack_visual_embeds is not None and layer_idx in range(len(deepstack_visual_embeds)):
    hidden_states = self._deepstack_process(
        hidden_states, visual_pos_masks, deepstack_visual_embeds[layer_idx]
    )
  • Qwen2.5VL視覺特征僅在輸入嵌入階段替換占位符 token,未在解碼器深層進(jìn)行融合。

5.視頻時(shí)序位置編碼優(yōu)化

  • Qwen2.5VL:在??get_rope_index???中,視頻的時(shí)序位置編碼基于絕對(duì)時(shí)間間隔(如??second_per_grid_t * tokens_per_second??),直接計(jì)算時(shí)序索引。
  • Qwen3VL:修改了視頻時(shí)序處理邏輯,通過時(shí)間戳(而非絕對(duì)時(shí)間位置)區(qū)分視頻幀,將??video_grid_thw???重復(fù)展開并強(qiáng)制時(shí)序維度為1(??video_grid_thw[:, 0] = 1??),時(shí)序信息通過外部時(shí)間戳 token 傳遞:

# Qwen3VLModel.get_rope_index
if video_grid_thw is not None:
    video_grid_thw = torch.repeat_interleave(video_grid_thw, video_grid_thw[:, 0], dim=0)
    video_grid_thw[:, 0] = 1  # 時(shí)序維度固定為1,依賴時(shí)間戳區(qū)分

6.視覺特征分層輸出與融合

  • Qwen3VL:視覺模型(??Qwen3VLVisionModel???)的??get_image_features???和??get_video_features??不僅返回最終視覺嵌入,還返回分層視覺特征(??deepstack_image_embeds/deepstack_video_embeds??),用于DeepStack機(jī)制在解碼器多層融合:

# Qwen3VLModel.get_image_features
image_embeds, deepstack_image_embeds = self.visual(pixel_values, grid_thw=image_grid_thw)
  • Qwen2.5VL:僅返回單一視覺嵌入,無分層特征輸出。分層特征融合能讓不同層級(jí)的視覺信息(如低級(jí)紋理、高級(jí)語義)分別參與文本解碼,提升多模態(tài)對(duì)齊精度。

7.文本RMSNorm的獨(dú)立優(yōu)化

  • Qwen3VL:新增??Qwen3VLTextRMSNorm???類,專門針對(duì)文本部分優(yōu)化??RMSNorm???,明確注釋其與T5LayerNorm等效,并通過??@use_kernel_forward_from_hub("RMSNorm")??引入可能的 kernel 優(yōu)化:

@use_kernel_forward_from_hub("RMSNorm")
class Qwen3VLTextRMSNorm(nn.Module):
    def forward(self, hidden_states: torch.Tensor) -> torch.Tensor:
        input_dtype = hidden_states.dtype
        hidden_states = hidden_states.to(torch.float32)
        variance = hidden_states.pow(2).mean(-1, keepdim=True)
        hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon)
        return self.weight * hidden_states.to(input_dtype)
  • Qwen2.5VL:文本和視覺共享??Qwen2RMSNorm???,未針對(duì)文本單獨(dú)優(yōu)化。文本??RMSNorm??的獨(dú)立設(shè)計(jì)可更精細(xì)地適配文本特征分布,提升語言建模能力。

DeepStack

大多數(shù)多模態(tài)模型通過將視覺 token 作為序列輸入到LLM的第一層來實(shí)現(xiàn)。這種架構(gòu)雖然簡(jiǎn)單,但顯著增加了計(jì)算 和內(nèi)存成本,因?yàn)槠漭斎雽有枰幚泶罅款~外的 token。DeepStack考慮到 LMMs 中語言和視覺 Transformer 的 N 層,將視覺 token 堆疊成 N 組,并將每組從下到上依次輸入到其對(duì)應(yīng)的 Transformer 層.

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)及DeepStack核心思想概述-AI.x社區(qū)

  • 如上左圖:傳統(tǒng)的大型多模態(tài)模型將所有視覺 token 串接成一個(gè)序列,適用 于高分辨率和低分辨率圖像。
  • 中間圖: DeepStack LMMs 將 token 堆疊成網(wǎng)格,并自下而上地將其注入到 Transformer 的前幾層和中間層,僅通過殘差連接實(shí)現(xiàn)。
  • 右圖:將 DeepStack 應(yīng)用于 Vicuna-7B(DeepStack-L)和 CLIP ViT-L(DeepStack-V),模型能夠接受 4× 倍的視覺 token,在相同的上下文長(zhǎng)度下顯著超 越序列式 LMM,并在廣泛的基準(zhǔn)測(cè)試中與使用更長(zhǎng)上下文的模型相媲美。

架構(gòu)

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)及DeepStack核心思想概述-AI.x社區(qū)

主要?jiǎng)?chuàng)新在于 DeepStack 策略(通過將圖像特征抽取分為兩個(gè)流來實(shí)現(xiàn)這一點(diǎn):一個(gè)全局視圖流用于捕捉全局信息,另一個(gè)高分辨率流通過在不同層的大模型中堆疊擴(kuò)張的高分辨率圖像特征來增強(qiáng)全局信息。),該策略將視覺 token 注入到不同的層中。大白話:DeepStack 的本質(zhì)是利用 Transformer 的分層架構(gòu)特性,將視覺 token 的 “整合過程” 分散到 LLM 的多層中。

  • 左圖:用于大模型的 DeepStack :給定輸入圖像,將從低分辨率版本中提取的 token 輸入到大模型的輸入層??紤]到圖像的二維特性,從高分辨率版本中提取相鄰區(qū)域,并將其重新組織為DeepStack ,然后將其輸入到大模型的后續(xù)層中。
  • 右圖:用于 ViTs 的 DeepStack :采用類似的采樣策略,但將視覺 token 輸入到視覺編碼器的 ViT 層中。DeepStack-V 的適配邏輯:利用 ViTs 的編碼器分層結(jié)構(gòu),將高分辨率視覺 token 注入 ViTs 的中間層,而非僅在輸入層(PatchEmbed)處理,增強(qiáng) ViTs 的細(xì)粒度特征提取能力。

多模態(tài)大模型基于投影的連接模塊獲得了視覺標(biāo)記,DeepStack策略就是如何在保持多模態(tài)處理有效的同時(shí)提供信息豐富的視覺標(biāo)記。

DeepStack PyTorch偽代碼:

Qwen3VL源碼側(cè)改進(jìn)點(diǎn)及DeepStack核心思想概述-AI.x社區(qū)

def forward(H0, Xstack, lstart, n, vis_pos):
    H = H0  # LLM初始隱藏態(tài)(含全局視覺token+文本token)
    for (idx, TransformerLayer) in enumerate(self.layers):
        # 滿足條件時(shí),注入高分辨率堆疊token(殘差連接)
        if idx >= lstart and (idx - lstart) % n == 0:
            stack_idx = (idx - lstart) // n  # 對(duì)應(yīng)Xstack的索引
            H[vis_pos] += Xstack[stack_idx]  # vis_pos:視覺token在隱藏態(tài)中的位置
        # 正常執(zhí)行LLM的Transformer層計(jì)算
        H = TransformerLayer(H)
    return H

參考文獻(xiàn)


本文轉(zhuǎn)載自??大模型自然語言處理??   作者:余俊輝

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-9-25 10:59:54修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦