在Jetson上玩转大模型Day9:建立EffectiveViT测试环境

科技   2024-11-01 11:16   江苏  











 在Jetson上玩转大模型:写在前面

在Jetson上玩转大模型Day2:环境搭建

在Jetson上玩转大模型Day3:TGW智能助手

在Jetson上玩转大模型Day4:SDW文生图

在Jetson上玩转大模型Day5:Ollama指令模式的智能助手

在Jetson上玩转大模型Day6:Ollama的Webui智能助手

在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot

在Jetson上玩转大模型Day8:多模態搜圖的NanoDB


雖然DCNN深度卷積神經網絡在2010年代爲視覺AI技術開創新格局,但實用性受到很大的限制。後來受到NLP在Transformer技術的突破,對視覺技術產生非常大的衝擊,於是Google在2021年提出的ViT(Vision Transform)技術,對機器視覺上的圖片分類、物體檢測、語義分割等應用,產生非常大的變化,不僅在效能上有所突破,並且爲視覺與大語言模型相結合的多模態技術,開創新的格局。

網上已經有很多關於ViT算法的專業內容,有興趣的讀者請自行搜索閱讀。本文章的重點,在於爲大家提供一個快速搭建測試不同ViT模型的實驗環境,因此需要尋找合適的模型來進行示範,爲此我們找到非常適合在邊緣AI設備上部署的EfficientViT模型。

這個模型是ViT模型家族中非常突出的成員,由MIT的HanLab所創作,用于高效的高分辨率密集预测视觉任务,其核心构建块是一个轻量级的多尺度线性注意力模块,仅需硬件高效操作即可实现全局感受野和多尺度学习,非常适合於GPU部署。

這個實驗室專注在發展“微型機器學習工程(Tiny Machine Learning Projects)”,成員名單從姓名上分析,應該是以華人爲主力(https://hanlab.mit.edu/team),而大部分的項目名稱使用“Efficient”作爲開頭,例如Efficient LLM quantization、Efficient ML systems、Efficient CNN algorithm-system co-designs等等

實驗室在https://github.com/mit-han-lab/efficientvit開源了調用這個模型的源碼,雖然在“Getting Started”所列的安裝步驟只有以下4步:

$ conda create -n efficientvit python=3.10

$ conda activate efficientvit

$ conda install -c conda-forge mpi4py openmpi

$ pip install -r requirements.txt

看起來似乎很簡單,但實際執行過程中卻是難度很大,特別是這個以Python爲主的各種依賴庫的版本變動太過頻繁,而requirements.txt所包含的依賴庫超過20個,如下所列:

torch==2.0.1

torchvision==0.15.2

einops

opencv-python

timm==0.6.13

tqdm

torchprofile

matplotlib

git+https://github.com/zhijian-liu/torchpack.git@3a5a9f7ac665444e1eb45942ee3f8fc7ffbd84e5

transformers

onnx

onnxsim

onnxruntime

git+https://github.com/alibaba/TinyNeuralNetwork.git

git+https://github.com/facebookresearch/segment-anything.git

pycocotools

lvis

# demo-specific packages

gradio

gradio-clickable-arrow-dropdown

gradio-box-promptable-image

gradio-point-promptable-image

gradio-sbmp-promptable-image

一開始的torch就牽涉到是否支持CUDA的問題,對應執行效率有很大影響。其次,20多個Python依賴庫之間的版本依存關係,會隨着版本變動頻率與時間的延伸,降低安裝成功的機率。第三,裏面還有三個依賴於其他Github repo代碼的安裝,同樣會增強整個安裝過程的不確定性。

事實上,根據我們實際的操作,很難一次就完成EfficientViT模型的執行環境,這並不是如項目所指示地那麼容易。

好在Jetson AI Lab同樣爲我們打包好一組專門執行EfficientViT模型的鏡像文件,我們依舊只要執行以下非常簡單的指令,就能進行操作:

$ jetson-containers  run  $(autotag efficientvit)

现在我们进入的项目里面的/opt/efficentvit目录中,但是用ls -l 指令检查一下里面的文件版本,发现全部都是 2024年1月份的版本,应该是比较老旧的内容,当然也都是可以执行应用。

如果我们想要执行EfficoentViT最新版本的应用时,只需要将最新的项目内容下载到本机里面,然后在 docker 执行时用 -v 去映射路径,这样就可以使用最新版本的代码去测试EfficientViT的各项应用。参考的指令如下:

$ git  clone  https://github.com/mit-han-lab/efficientvit

$ jetson-containers  run  -v ~/efficientvit:/opt/efficientvit  $(autotag efficientvit)

現在就可以使用最新版本的代碼內容,對不同版本 EfficientViT模型進行各種不同的測試,甚至訓練自己的ViT模型。目前項目提供三大類應用,我們可以到 https://github.com/mit-han-lab/efficientvit/tree/master/applications 看到cls.md、sam.md與seg.md三個基礎AI視覺應用說明:

每個應用說明中,對進行實驗都提供非常完整的相關內容,包括:

  • 參考數據集,含下載鏈接;

  • 預訓練模型,含參數與下載鏈接的列表(如下图);

  • 執行調用的範例代碼;

  • 各種評估性能的範例指令;

  • 視覺化處理的示範指令;

  • 部署指令:包括使用ONNX與TensorRT的示範指令

  • 訓練模型的示範指令

  • 其他

所有執行內容請詳細參考applications裏 *.md 的操作說明,對於實驗用途的人來說,這些操作內容是非常豐富並且足夠的。


GPUS开发者
在这里,你可以及时了解NVIDIA GPU的行业资讯、最新进展、应用场景和各项功能。还有一些工具、技巧和教程,帮助你利用GPU打造未来的科技。参与GPU世界举办的精彩活动,体验人工智能的未来生活。
 最新文章