如何微調和部署OpenVLA在機器人平臺上

這個教程來自這個英偉達網址

????????教程的目標是提供用于部署 VLA 模型的優化量化和推理方法,以及針對新機器人、任務和環境的參考微調流程。在一個自包含的仿真環境中,結合場景生成和領域隨機化(MimicGen)對性能和準確性進行嚴格驗證。未來階段將包括與 Isaac Lab 和 ROS2 的 sim2real 集成、對 CrossFormer 等相關模型的研究,以及針對實時性能的神經網絡結構優化。

  • ??針對 VLA 模型的量化和推理優化

  • ? 原始 OpenVLA-7B 權重的準確性驗證

  • ? 基于合成數據生成的參考微調工作流程

  • ? 在 Jetson?AGX?Orin 上使用 LoRA 進行設備端訓練,以及在 A100/H100 實例上進行完全微調

  • ? 在示例積木堆疊任務中通過領域隨機化達到 85% 的準確率

  • ? 提供用于復現結果的示例數據集和測試模型

1. 量化

????????已在 NanoLLM 的流式 VLM 管道中添加對 OpenVLA 的支持,使用 MLC 在 INT4/FP8 量化下運行,并利用 TensorRT 以 FP16 精度執行視覺編碼器。

????????首先,我們將在 BridgeData V2 數據集(來自 Open X-Embodiment 集合中權重最高的數據集之一)上測試模型。該數據集也是模型的訓練集,用于在部署時驗證量化和推理是否正確。以下截圖摘自其官網,展示了數據集的樣貌:

????????下面的命令會啟動容器、下載數據集和模型(如有必要)、在首次運行時進行量化,并使用歸一化均方誤差(NRMSE)來衡量模型預測動作值與數據集真實值之間的準確度,以消除動作空間各個維度范圍不一致帶來的偏差。我們在 HuggingFace Hub 上抽取了原始 Bridge 數據集的 100 個 episode 子集,因此無需為這些測試下載完整的約 400?GB 數據集。

INT4:

jetson-containers run $(autotag nano_llm) \python3 -m nano_llm.vision.vla --api mlc \--model openvla/openvla-7b \--quantization q4f16_ft \--dataset dusty-nv/bridge_orig_ep100 \--dataset-type rlds \--max-episodes 10 \--save-stats /data/benchmarks/openvla_bridge_int4.json

FP8

jetson-containers run $(autotag nano_llm) \python3 -m nano_llm.vision.vla --api mlc \--model openvla/openvla-7b \--quantization q8f16_ft \--dataset dusty-nv/bridge_orig_ep100 \--dataset-type rlds \--max-episodes 10 \--save-stats /data/benchmarks/openvla_bridge_fp8.json

FP16

jetson-containers run $(autotag nano_llm) \python3 -m nano_llm.vision.vla --api hf \--model openvla/openvla-7b \--dataset dusty-nv/bridge_orig_ep100 \--dataset-type rlds \--max-episodes 10 \--save-stats /data/benchmarks/openvla_bridge_fp16.json
  • 使用 --save-stats 可以將逐幀指標和平均值保存到文件;

  • 使用 --max-episodes 可以限制處理的 episode 數量。

  • 測試環境:Jetson?AGX Orin 64GB,JetPack?6

  • 量化精度對比:后續微調模型在 INT4 上的準確度將與 FP8/FP16 保持一致

每一幀都會打印模型預測的 7 維動作向量及其真實值,以及該幀的準確率、延遲和幀率。波浪號(~)后的數字為迄今為止各項指標的平均值,命令結束時最后一行報告的是整個數據集處理完畢后的總體均值。

# INT4
step 355  [-0.02692  0.00776 -0.00299  0.08160  0.07292  0.04791  0.99608]  accuracy 0.8466 ~0.9017  time=336.2 ms  fps=2.96 ~2.97
gt   355  [-0.02387  0.00760 -0.00318  0.15965  0.07707  0.03281  1.00000]# FP8
step 355  [-0.02392  0.00767 -0.00310  0.08160  0.07692  0.03217  0.99608]  accuracy 0.9982 ~0.9523  time=469.7 ms  fps=2.13 ~2.12
gt   355  [-0.02387  0.00760 -0.00318  0.15965  0.07707  0.03281  1.00000]# FP16
step 355  [-0.02392  0.00767 -0.00310  0.08160  0.07692  0.03217  0.99608]  accuracy 0.9982 ~0.9531  time=842.3 ms  fps=1.19 ~1.18
gt   355  [-0.02387  0.00760 -0.00318  0.15965  0.07707  0.03281  1.00000]

????????如上所述,Bridge 數據集已包含在訓練集中,下面我們還會在未參與訓練、具有更大場景變化的新數據上再次運行測試。此工具同樣支持加載 Open X-Embodiment 中的 RLDS/TFDS 格式數據集,以及 Robomimic/MimicGen 的 HDF5 格式數據。你也可以參考下面的代碼示例,利用公開的 API 自行創建 agent 和測試腳本。

2. 推理API

在容器中使用 NanoLLM 庫對攝像頭流運行 VLA 推理的代碼非常簡單:

from nano_llm import NanoLLM
from nano_llm.plugins import VideoSource# 加載視覺-語言-動作模型(VLA),使用 q4f16_ft 量化方式
model = NanoLLM.from_pretrained(model, quantization='q4f16_ft')
# 打開攝像頭(或視頻流),在 CUDA 流 0 上進行處理
camera = VideoSource(video_source, cuda_stream=0)assert(model.vla)  # 確保加載的是 VLA 模型while True:# 捕獲一幀圖像,返回格式可以是 cudaImage、NumPy 數組或 GPU 上的 Torch 張量image = camera.capture()if image is None:  # 如果因超時沒捕獲到圖像,就繼續重試continue# 基于當前圖像和指令,預測動作向量# 返回一個長度等于自由度數(dof)的數組或張量# 對于 OpenVLA,順序是 (Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper)actions = model.vla.predict_action(image, instruction="pick up the nearest object",  # “撿起最近的物體”action_space="normalized",                 # 返回已歸一化的動作值return_tensors='np',                       # 用 NumPy 數組格式返回)# 接著就可以把 actions 發給機器人控制器或 IK 解算器去執行啦...

quantization='q4f16_ft':在推理時使用 INT4 + FP16 混合量化,并進行過微調,以在嵌入式設備(如 Jetson)上獲得最佳性能和精度平衡。

VLA 模型也同樣被 Agent?Studio支持,該平臺還集成了仿真組件。

3. 在線驗證

????????鑒于該任務領域的挑戰性、動態反饋回路以及仿真/訓練/推理的計算需求,使用 VLA 進行語言引導的靈巧操作相比于僅使用 LLM 和 VLM,復雜度顯著提升。

????????要從在 token 級別預測 logits,到在一系列連續幀中不斷輸出足夠正確的動作以形成有用行為,就必須在訓練和推理流程的每個階段交叉檢驗輸出并衡量準確度,以便在出現性能回退時能夠定位原因。

????????與典型的監督學習應用不同,最終任務完成度和成功率并不是從不考慮時間序列和物理交互反饋及復合誤差的靜態預錄數據集中測量的——它們需要在線驗證,無論是在仿真中還是在真實測試中。

彌合仿真到現實的鴻溝:使用 NVIDIA Isaac Lab 訓練 Spot 四足機運動

????????在訓練期間,會根據真實動作標簽(即有多少動作 token 被準確預測)來測量 token 分類準確率,模型通過最小化該損失來優化(這與 LLM 的常規做法一致)。

????????同時,也會根據還原出的實值輸出與真實值的 L1 誤差來衡量連續域動作準確率。由于 token 分類不對“更接近目標”提供額外獎勵,連續動作準確率通常會略高于分類準確率。

????????實際上,為了在類似環境中成功完成任務,這兩項準確率都應保持在 95%以上。

????????為了達到如此高的準確度,相關工作和研究中通常會故意讓模型在相同的 90 萬個 episode 上訓練多達 30 個 epoch(OpenVLA),以實現“過擬合”。Transformer 擅長通過少量示例記憶特定知識,但也對過擬合和遺忘先前學到的信息非常敏感。因此,LLM 在常規微調中通常只訓練少數幾個 epoch,以保留其零樣本能力和對分布外輸入的泛化能力。

????????在本項目的微調階段,我們評估了不同訓練 episode 數量與重復數據 epoch 數量對模型準確率和任務成功率的影響。

????????直到推理階段才會測量實際的任務成功率,此時模型要么連入仿真器,要么在相似條件下進行一系列耗時的物理實驗。

????????我們將 MimicGen 直接集成到 OpenVLA 的訓練腳本中,以源源不斷地產生全新的數據,但在模型處理了大量 episode 后,遇到了梯度不穩定的問題。

4. 用MimicGen仿真

????????MimicGen 利用場景圖信息和任務/子任務的元數據(指出環境中哪些物體是當前子任務的目標),僅憑 10 個遠程示教樣本,就能生成隨機化的訓練回合——將原始示教軌跡插值到新的、隨機的位置和姿態中。

????????這樣即可產生大量獨特的訓練數據,提高模型的魯棒性,而無需投入大量人工來教機器人新技能和行為。

????????MimicGen 構建在 Robomimic 和 Robosuite 仿真器之上,可與 VLA 一同在 Jetson 上無頭運行,極大簡化了可復現性實驗的環境搭建。RoboCasa 項目基于 MimicGen,目前正與 NVIDIA Omniverse 和 OSMO 集成。未來我們還計劃引入 Isaac Lab,以獲得更好的可擴展性、更精準的物理模擬和更逼真的渲染效果。

????????MimicGen 包含 12 種任務,例如塊狀物堆疊、抓取與放置、裝配以及廚房場景。每種任務都有隨著學習進展而難度遞增的多個變體,這為對比“人工設計”的訓練順序與 OpenVLA 在 Open X?Embodiment 中采用的純隨機化順序,提供了很好的研究機會。

????????在本教程階段,我們將聚焦“塊狀物堆疊”任務,以了解要達到論文中 >75–80% 的成功率,所需的訓練需求和運行時性能指標。

????????這些分析將為在更多行為模式和更復雜的場景(如與 MimicGen 環境差異較大的部署環境)中擴展模型提供指導——正如原始 OpenVLA 權重在那些場景中完全沒有成功記錄所顯示的那樣。

4.1 數據生成

????????我們基于一份針對 aarch64+igpu 做了補丁的代碼分支,構建了用于 Jetson 的 MimicGen 容器,并增加了一些功能增強:

  • 為相關任務生成帶有隨機變體的自然語言標簽

  • 對物體的顏色/材質做額外的領域隨機化
    (對應的環境版本命名為 Stack_D2Stack_D3Stack_D4

????????在訓練 OpenVLA 時,會將圖像和標簽保存到磁盤;而后續的推理則在在線仿真中完成,以測量任務成功率。為此,我們將 MimicGen 與 Agent Studio 集成,可以交互式地測試模型,并快速插入諸如 ASR(自動語音識別)等組件,用以語音指令控制機器人。

????????在這個 OpenVLA 分支中,已初步支持將 MimicGen 直接集成到訓練流程,實現實時仿真與驗證,以及在無限新回合中訓練而不重復同一批數據(epoch)。我們發現 LoRA 微調后期出現梯度突增的問題,建議可嘗試降低學習率,或在完整微調腳本中同樣集成 MimicGen,并使用 FDSP 在 dGPU 上增大批量大小來穩健訓練。

????????下面的命令會生成指定數量的訓練回合,保存為 Robomimic HDF5 格式。我們已在 HuggingFace Hub 上提供了包含 1000 和 2500 回合的渲染數據集。OpenVLA 建議僅需 10–150 回合即可完成高效微調與適應,其他類似場景中表現可能相近,但我們發現在 MimicGen 環境下遠不足以達到預期效果。

jetson-containers run $(autotag nano_llm) \python3 -m mimicgen.generate \--tasks Stack_D4 \--episodes 100 \--output /data/datasets/mimicgen \--cameras agentview \--camera-width 224 \--camera-height 224

4.3?RLDS 轉換

????????OpenVLA 使用基于 TFDS 的 RLDS 格式數據集,所以我們提供了一個從 HDF5 到 RLDS 的轉換工具。對于大量回合的數據,這一步也可能非常耗時,這正是我們希望在訓練時在線運行 MimicGen 并直接將其集成到 OpenVLA 的原因之一。除非你需要生成不同的數據,否則可以跳過這一步,直接使用我們已經上傳為 RLDS 格式的 MimicGen 數據集。

jetson-containers run $(autotag nano_llm) \python3 -m nano_llm.datasets \--dataset /data/datasets/mimicgen/demo_src_stack_task_D4/demo.hdf5 \--dataset-type mimicgen \--convert rlds \--remap-keys agentview:image \--output /data/datasets/mimicgen/rlds/stack_d4_ep2500

????????運行轉換后,會在指定的輸出目錄下生成一組 TFRecord 文件,這些文件能夠被 OpenVLA 的訓練腳本直接加載使用。

5. 微調

????????本項目的主要目標之一是量化讓模型適應不同機器人和任務所需的訓練工作量。

????????我們的開發流程主要包括在 Jetson?AGX?Orin?64GB 上運行測試性 LoRA 微調并本地調試問題,當結果令人滿意時,再在 Brev.dev、Vast.ai 和 RunPod 等提供商的 A100/H100 云實例上,使用 FDSP 完整地進行微調。我們也嘗試過在兩臺 Jetson?AGX?Orin 上用 FDSP 做全量微調,但所有設置均因顯存不足而失敗。我們已將訓練好的測試模型上傳到 HuggingFace,供大家在下文的推理+仿真環境中試用。

以下是我們曾使用的訓練 GPU 配置及相應的最大化顯存利用的 batch size:

????????在 Jetson?AGX?Orin 和兩塊 A100 上訓練至收斂大約需要 24–36 小時,具體時長取決于數據量和訓練輪數(epoch)。為了盡量避免前文提到的過擬合,我們在完整微調時將 epoch 控制在 5 次以內,而通過增加訓練回合數來提升模型表現。

具體過程可以看OpenVLA的官方repo

6. 推理和仿真

????????為了衡量模型在完成任務時的真實表現,我們在 Agent Studio 中啟動了一個與 VLA 模型相連的 MimicGen 環境。它通過檢查仿真發放的獎勵來統計成功回合數——這些獎勵模型本身并不使用,僅用以標記任務何時完成。我們設置了 200 幀的執行上限,超過該幀數則判定為失敗。

jetson-containers run $(autotag nano_llm) \python3 -m nano_llm.studio --load OpenVLA-MimicGen-INT4jetson-containers run $(autotag nano_llm) \python3 -m nano_llm.studio --load OpenVLA-MimicGen-FP8jetson-containers run $(autotag nano_llm) \python3 -m nano_llm.studio --load OpenVLA-MimicGen-FP16

????????要開始基準測試,只需將 AutoPrompt 節點的輸出連接到 OpenVLA 節點。默認情況下它會無限運行——我們各做了 100 回合測試,由于仿真與模型推理同步運作,整個過程可能需要數小時(后續實驗會嘗試基于多步累積動作進行訓練,并縮小模型規模以提升性能)。

這里每個方框都是一個「模塊」,線條表示數據流向。

  1. WebAudioIn

    1. 功能:從瀏覽器或麥克風抓取實時音頻流。
    2. 輸出:raw audio。
  2. VADFilter

    • 全稱 Voice Activity Detector,檢測「有人在說話」的時段,自動切掉靜音與噪聲。

    • 輸入:raw audio;輸出:audio segments + interrupt 信號(暫中斷)。

  3. WhisperASR

    • 用 OpenAI Whisper 做自動語音識別,輸出 partial(中間結果)和 final(完整文字)。

    • 作用:把語音轉換成文字命令。

  4. TextOverlay → VideoOutput

    • TextOverlay:把識別出來的文字直接疊加到視頻幀上(右側仿真窗口里看到的綠色提示)。

    • VideoOutput:負責把最終合成的圖像以 ~5–6 FPS 推送到界面右側。

  5. UserPrompt

    • 用戶也可以手工在這里輸入文字(比如在測試時直接打“把紅塊放到大塊上”)。

  6. AutoPrompt

    • 把 WhisperASR 的結果、UserPrompt,以及 MimicGen 提供的上下文(見下)——綜合出一個“List”格式的、給 LLM 的 Prompt 列表。

  7. MimicGen

    • 這里是視覺+語言的示范合成器:

      • image:當前仿真畫面截圖;

      • text:可以是示范軌跡的文字描述或環境標注;

    • 它會在內部根據示例自動生成更多“虛擬示范”,增強 LLM/策略的少樣本學習能力。

  8. openvla-7b+stac

    • 把上游的 Prompt 列表喂給一個 7B 參數量的 VLA(Vision-Language-Action)模型,輸出一系列 actions(機器人動作指令)。

    • “2.8 FPS” 表示這個模型的推理速度。

  9. 這些 actions 再回流到 VideoOutput,驅動仿真里的機械臂做實際操作。

????????此次測試使用的是在 2500 回合數據上微調 4 個 epoch 的模型。盡管任務相對簡單,該模型依然證明能夠達到約 85% 的預期成功率。量化對性能的提升幾乎呈線性增長,對準確率的影響不到 1%。

在評估了那些使用較少回合但訓練更多輪次的微調模型的成功率后,我們清楚地看到了增大數據集規模所帶來的影響:

????????這并不意味著使用 2500 回合訓練的模型就沒有過擬合——事實上,它已經學會了總是先堆放小方塊,基本忽略了指令。要解決這個問題,就需要在訓練中引入更多任務多樣性,而現在我們已有了這樣的數據流程。

????????與此同時,我們也希望將研究擴展到現實世界場景,而不僅僅局限于仿真環境,以驗證模型在真實操作中的可行性。

????????在操控這一極具挑戰的問題域中,要達到通用模型所需的變化量和數據量,不禁讓人思考:是采用完全隨機化的任務學習,還是在訓練進程中隨著復雜度遞增、以更有針對性和精心設計的方式進行指導,更能高效地培養出具備廣泛適應能力的模型?

7. 總結

????????搞了半天,應該去? Agent Studio?中找我想要的,如何啟動一個與 VLA 模型相連的 MimicGen 環境(只有mimicgen?能否使用其他VLA?)。

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

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

相關文章

深入剖析Flink內存管理:架構、調優與實戰指南

在大數據處理領域,Apache Flink憑借強大的流處理和批處理能力備受青睞。而Flink內存管理機制,作為保障作業高效穩定運行的關鍵支柱,深刻影響著任務執行性能、資源利用率以及系統容錯能力。理解并掌握Flink內存管理原理與優化策略,…

【力扣 C】動態規劃專題目錄

【力扣 簡單 C】509. 斐波那契數https://blog.csdn.net/2503_92320911/article/details/148810148 【力扣 中等 C】983. 最低票價https://blog.csdn.net/2503_92320911/article/details/148833421 【力扣 中等 C】91. 解碼方法https://blog.csdn.net/2503_92320911/article/d…

Linux 中如果網絡連接丟失或無法找到網絡設備

如下步驟 1. 檢查網絡服務狀態 sudo systemctl status NetworkManager 如果服務未運行,啟動并啟用它: sudo systemctl start NetworkManager sudo systemctl enable NetworkManager ______ 2. 檢查網絡接口 ip add 確認網卡(如 eth0、en…

【Linux 平臺總線驅動開發實戰】

Linux 平臺總線驅動開發實戰 一、平臺總線驅動基礎概念二、核心數據結構解析2.1 設備結構體 struct platform_device2.2 驅動結構體 struct platform_driver2.3 資源結構體 struct resource 三、驅動開發完整流程3.1 設備注冊3.2 驅動注冊3.3 設備與驅動匹配 四、編譯與測試4.1…

LabVIEW液位上升圖像識別 附件有源碼

源程序在這里https://www.bjcyck.com/nd.jsp?fromColId101&id2675#_np101_331 本LabVIEW 程序實現基于圖像灰度特征的液位上升監測與控制,通過讀取序列液位上升圖像,分析指定區域灰度變化獲取液位斜率,依據設定標記位置實現液位上升到目…

git安裝使用詳細教程

git高速下載 macOS 系統 # 方法1:Homebrew(推薦) brew install git# 方法2:官方安裝包 下載地址:https://sourceforge.net/projects/git-osx-installer/Linux 系統 # Debian/Ubuntu sudo apt update && sudo…

瑪哈特機械矯平機:精密制造的“應力消除師”與“平整度雕刻家”

機械矯平機,作為金屬板材加工鏈中的關鍵一環,其價值遠不止于“壓平”那么簡單。它是材料科學、精密機械與控制技術的結晶,是確保高端制造品質的幕后功臣。本文將深入探討其核心機理、進階應用及未來方向。 一、 矯平機理再探:超越…

四色(定理/猜想)染色算法小軟件Version1.11 2025.6.24 開發者:孝感動天/臥冰求鯉

四色(定理/猜想)染色算法小軟件Version1.11 2025.6.24 開發者:孝感動天/臥冰求鯉 開發者:路人甲/打醬油 開發者:四色定要治理/四鄰不安/相鄰必反/草木皆兵/圍棋緊箍/不是我~干的/和我無關 開發者:不是我/不是我干的&#xff0c…

SQL 分頁方法全解析:從基礎到高級應用

一、引言 在 Web 應用和數據分析中,分頁是處理大量數據的必備功能。想象一下,如果沒有分頁,社交媒體的動態流、電商平臺的商品列表都將變成無窮無盡的長頁面,用戶體驗和系統性能都會受到嚴重影響。本文將深入探討 SQL 中各種分頁方…

STM32 adc采集數據存到SD卡中

F1板子實現adc采集模擬信號存儲到SD卡中 STM32 adc采集數據存到SD卡中/STM32SD文件系統ADC采集/AD/adc_dma.c , 10291 STM32 adc采集數據存到SD卡中/STM32SD文件系統ADC采集/AD/adc_dma.h , 661 STM32 adc采集數據存到SD卡中/STM32SD文件系統ADC采集/CMSIS/core_cm3.c , 17273…

redis8.0新特性:布谷鳥過濾器(Cuckoo Filter)詳解

文章目錄 一、寫在前面二、使用1、CF.RESERVE 創建布谷鳥過濾器2、CF.ADD 添加元素3、CF.ADDNX 不存在才添加4、CF.COUNT 判斷元素添加次數5、CF.DEL 刪除一次元素6、CF.EXISTS 判斷元素是否存在7、CF.MEXISTS 批量判斷元素是否存在8、CF.INFO 查看布谷鳥過濾器信息9、CF.INSER…

2025 Java秋招『面試避坑指南』:牛客網高頻題分類精講

前言 今天為大家整理了目前互聯網出現率最高的大廠面試題,所謂八股文也就是指文章的八個部分,文體有固定格式:由破題、承題、起講、入題、起股、中股、后股、束股八部分組成,題目一律出自四書五經中的原文。 初中級和中高級都有&#xff0c…

git安裝使用和git命令大全

Git高速下載 程序員面試資料大全|各種技術書籍等資料-1000G Git 命令大全 一、基礎操作 1. 初始化與克隆 命令說明示例git init初始化本地倉庫git initgit clone克隆遠程倉庫git clone https://github.com/user/repo.gitgit remote add添加遠程倉庫git remote ad…

非常好用的markdown轉pdf工具

在文檔處理和知識管理中,Markdown因其簡潔易讀的特性而廣受歡迎,而PDF格式則因其廣泛的兼容性和穩定性而被廣泛用于文檔分享和存檔。然而,將Markdown文檔高效地轉換為PDF格式,同時保留格式和樣式,一直是許多用戶的需求…

八股文——JAVA基礎:基本數據類型與包裝類的區別

基本數據類型包含八種, 1.用途不同,在目前編程而言,基本除了使用局部變量會使用基本數據類型外,都會去使用包裝類。包裝類能夠適用泛型是目前企業編程使用包裝類的主要原因,而基本類型不行。除此之外,包裝…

從0開始學習R語言--Day30--函數型分析

在研究離散變量之間的影響時,我們往往只能獲取類似中位數,平均數點來額外數據特點;但如果數據本身具有時間特性的話,我們可以嘗試運用函數型分析,將靜態的離散點轉為動態過程來分析,即若本來是分析離散點對…

Agent輕松通-P3:分析我們的Agent

歡迎來到啾啾的博客🐱。 記錄學習點滴。分享工作思考和實用技巧,偶爾也分享一些雜談💬。 有很多很多不足的地方,歡迎評論交流,感謝您的閱讀和評論😄。 目錄 1 引言2 使用工具分析Agent:”日志“…

如何將FPGA設計驗證效率提升1000倍以上(1)

我們將以三個設計樣例,助力您提升設計開發效率。 對于FPGA應用開發來說,代碼是寫出來的,更是調試出來的。軟件仿真擁有最佳的信號可見性和調試靈活性,被大多數工程師熟練使用,能夠高效捕獲很多顯而易見的常見錯誤。 …

RabbitMQ 利用死信隊列來實現延遲消息

RabbitMQ 利用死信隊列來實現延遲消息 基于 TTL(Time-To-Live) 死信隊列(DLX)的方式來實現延遲消息 首先消息會被推送到普通隊列中,該消息設置了TTL,當TTL到期未被消費掉,則會自動進入死信隊列…

Keepalived+Haproxy+Redis三主三從

一、集群部署 1、案例拓撲 2、資源列表 主從節點是隨機分配的,下屬列表只是框架: 操作系統主機名配置IP應用OpenEuler24master12C4G192.168.10.101RedisOpenEuler24master22C4G192.168.10.102RedisOpenEuler24master32C4G192.168.10.103RedisOpenEule…