Neat Library 版本資訊
SiMa.ai Neat Library 的版本資訊。
0.6.1(尚未發行)
重大變更
- Neat Library 的 C++ ABI 現在是 7(
libsima_neat.so.7)。ResizeSpec、PreprocessOptions、PreprocOptions和NormalizationOptions新增了欄位。請使用相符的標頭及執行階段套件,重新建置 C++ 應用程式、外掛程式與 Python 繫結;不要重用 ABI 6 二進位檔,也不要新增相容性符號連結。
前處理
-
Model 前處理與獨立的 Resize 共用
ResizeInterpolation。新程式碼請使用preprocess.resize.interpolation = ResizeInterpolation.BilinearAntialiased,而非取樣器字串。既有scaling_type字串仍相容;與其衝突的非預設字串會被拒絕。 -
既有前處理選項現在可指定抗鋸齒雙線性縮放、明確的原始重新縮放係數、色彩轉換位置,以及浮點轉換原則。在固定原始算術路徑中,平均值和標準差欄位保留原始平均值及除數,而不是折疊後的仿射轉換。BF16 預設維持既有截斷方式,最接近偶數捨入須明確啟用。FP16 使用最接近偶數捨入。精確 INT8 量化需要與模型乘數一致的原始步長;無法從乘數重建該步長。未指定新選項時,維持既有路徑。請參閱 Preproc。
0.6.0
破壞性變更
-
張量模式的
Model::input_specs()現在保留 MPK 定義的秩,包括單元素批次軸([1,H,W,C])。批次為 1 的 HWC 輸入仍受支援,包括未提供初始輸入而呼叫build()之後。compiled_batch_size()讀取 MLA 宣告的批次大小,不再從張量維度推斷。 -
模型輸出現在呈現 MPK 中定義的最終邏輯形狀與佈局,而非中間裝置形狀。例如,ResNet-50 的批次展平輸出形狀為
[1, 1000],邏輯佈局未知,而不是四維 HWC 形狀。其 Float32 張量格式可能是EVXX_FLOAT32而非FP32。請依張量的 dtype 與形狀解讀數值,不要從後端格式標籤推斷邏輯軸。 -
Neat Library 的 C++ ABI 現在為 6,共用函式庫 SONAME 為
libsima_neat.so.6。張量現在攜帶特徵擷取器語意中繼資料,公開的 GenAI 請求/結果型別攜帶 ASR 任務、語言與探測中繼資料,GraphLinkOptions包含即時接納限制,而BenchmarkOptions與BenchmarkReport新增了欄位。請重新建置 C++ 應用程式與外掛程式,並安裝相符的 Core 執行階段與開發套件。SimaArgMaxOptions新增了axis與keepdims,SimaArgMax的類別佈局也已變更。 -
即時圖組合現在使用
GraphLinkOptions、Graph::connect()和Graph::build()。預覽版 APIRealtimeGraphLinkOptions、connect_realtime()、build_fused_realtime_sources()/build_fused_realtime_source()和RealtimeEveryFrameByStream已移除。包含realtime_every_frame_by_stream的已儲存圖必須使用受支援的原則重新建立;請參閱連接即時片段。 -
套件版本為 0.6.0。
Model::Options與BoxDecodeOptions現在包含yolox_seg_pose.pose_classes;這些公開佈局新增欄位需要 ABI 6 使用元件。不要使用 ABI 相容性符號連結。GraphOptions現在包含kernel_runner_a65_workers。更新至 0.6.0 時,請使用相符的執行階段與開發套件重新建置應用程式、外掛程式及 Python 擴充模組。不要僅因兩者都使用 ABI 6,就混用預覽版二進位檔與正式版本套件。
執行階段變更
-
Model::benchmark()會從 Sentinel 讀取板子遙測資料,而不再自行取樣電源軌功耗。延遲 階段與吞吐量階段現在都會持續執行,直到各自測量了num_samples個輸入且至少已經過BenchmarkOptions::min_duration_ms(預設為 10 秒),讓功耗與溫度讀數涵蓋多個 Sentinel 樣本。若要使用先前以輸入數量為準的計時方式,請將min_duration_ms設為 0。BenchmarkReport新增latency_p50_ms、latency_p95_ms、latency_p99_ms、peak_power_watts、throughput_samples、throughput_duration_ms,以及包含電源軌功耗、晶粒與板子溫度、整體與各核心的 CPU 使用率,以及 MLA、EV74 記憶體與整塊板子的 Linux 記憶體的telemetry。avg_power_watts與energy_joules的意義不變;energy_joules為num_samples個輸入的能耗。Sentinel 無法使用時,仍會回報延遲與 FPS,並由telemetry.status說明原因。DevKit 安裝程式會透過sima-cli neat install sentinel安裝 Sentinel;若執行中的版本不是最新的正式版建置,則會將其升級。請參閱測量模型執行效能。 -
以
enable_board_power()啟用的 Run 電力遙測也改從 Sentinel 讀取。Core 不再開啟 I2C 電源監測器,因此其讀取不再干擾 Sentinel 對相同電源軌的讀取,安裝程式也不再將sima加入i2c群組。Sentinel 每 2 秒取樣一次,因此短於約 2 秒的測量視窗可能沒有電力樣本。電源軌以 Sentinel 的指標命名,例如mla,且只回報功耗。sample_interval_ms、PowerMonitorProfile、內建電源軌表、PowerRailConfig的 I2C 欄位、enable_modalix_som_power()、enable_modalix_dvt_power(),以及modalix_som_power_monitor_options()/modalix_dvt_power_monitor_options()均已棄用並會被忽略。 -
TelemetryMonitor會在start()與stop()之間從 Sentinel 記錄板子功耗、溫度、CPU 使用率與記憶體,C++ 與 Python 皆可使用。read()會傳回目前為止的摘要,而Telemetry會以 YAML 格式列印,並可儲存為 YAML 或 JSON。Model::benchmark()使用它產生BenchmarkReport::telemetry。PowerMonitor、read_power_snapshot()、RunOptions::enable_board_power()、RunOptions::power_monitor與MeasureOptions::include_power已棄用,請改用TelemetryMonitor;這些 API 仍可繼續運作。請參閱記錄板子遙測。 -
BenchmarkOptions::inputs可讓Model::benchmark()改用您自己的張量而非合成輸入執行,BenchmarkReport::input會記錄使用了哪一種。請參閱使用自己的輸入進行測量。 -
外掛程式延遲已棄用,並將被移除。涵蓋
MeasureOptions::include_plugin_latency與plugin_latency_source、BenchmarkOptions::include_plugin_latency、start_measurement(bool),以及Model::benchmark(int, bool)/Model::benchmark(bool)。請改用start_measurement()與benchmark(num_samples)。 -
硬體解碼使用直接編解碼器工作階段與 DMA-BUF 輸出。Core 不再使用解碼器常駐程式接納租約或
SIMA_DECODER_ADMISSION_REQUIRE。解碼器集區與調校選項仍可使用。 -
C++ 和 Python 可透過
SimaDecode與RtspDecodedInput使用原生 H.265/HEVC 解碼。RtspEncodedInput無需解碼即可提供已剖析的 H.265 存取單元。H.265 輸入必須使用 HEVC Main 設定檔、8 位元、4:2:0。編解碼器選擇器接受H265和HEVC;H.264 選擇器也接受AVC。FormatTag/pyneat.Format在編碼資料的圖邊界接受相同別名,並仍序列化為H264和H265。 -
VideoSender透過VideoSenderOptions::Passthrough(codec)/pyneat.VideoSenderOptions.passthrough(codec),將已編碼的 H.264 或 H.265 以 RTP over UDP 轉送,全程不重新編碼。H.265 預設使用 RTP 負載類型 98;H.264 維持 96。H264RtpUdpFromEncoded()已棄用,請改用Passthrough(RtspCodec::H264)。 -
若原始
VideoSender輸入是相容的 DMA 支援 NV12,且已安裝的編碼器宣告input-layout-aware=true,現在會自動省略格式轉換。既有的編碼器輸入邊界會在最終編碼器儲存空間中準備其他原始輸入。H264RtpUdpFromRaw(...)C++ 與 Python API 維持不變。 -
InputMemoryPolicy::Auto區分偏好的配置與必要的輸入儲存空間。偏好裝置的路徑會保留呼叫端擁有的Tensor與Sample儲存空間,而不經由 CPU 影像轉換。相容的 DMA-BUF 輸入維持零複製;既有 CPU 輸入仍可能需要在裝置輸入處實體化。明確的 EV74/DMS0 輸入要求仍會執行。 -
RTSP 輸入使用
RtspEncodedInputOptions和RtspDecodedInputOptions上單一且不依賴編解碼器的payload_type欄位來選擇 RTP 負載類型:-1選擇編解碼器預設值(H.264/H.265 為 96,MJPEG 為 26)、0停用負載篩選,而正值則選擇指定的負載。RtspEncodedInputOptions::h264_payload_type和mjpeg_payload_type已棄用;若它們改變解析後的負載,執行階段會發出一次警告。 -
一般的
build()現在會針對符合條件的即時扇入自動選擇融合式 lowering。直接編碼的 H.264 或 H.265VideoSender分支會在解碼前融合,無需將解碼後的影格複製至 CPU。來源、解碼器與傳送端的編解碼器必須一致;不一致的組合仍會留在不同的管線區段中。若要進行即時預覽,請將該邊緣設為RealtimeLatestByStream,讓速度較慢的視訊接收器以新存取單元取代過時的存取單元,而不是對解碼器分支施加背壓。 -
新增 C++ 和 Python
CameraInput檔案與教學內容,涵蓋由 MIPI/libcamera 來源擁有的圖,以及 CVU/MLA 模型路徑前的自適應 SiMaAI 記憶體交接。 -
MetadataSender現在會將較大的 JSON 訊息分塊,使 UDP 負載維持在 1200 位元組以內。請在升級此 Neat Library 版本前或同時,將 Insight 更新至支援中繼資料分塊重組的版本;舊版 Insight 仍支援最高 1200 位元組、未變更的 JSON 負載。
圖的建構與驗證
- 新的
SimaVoxelize、SimaPillarScatter、SimaBEVPoolPlan與SimaBEVPool節點會以 INT8 或 BF16 張量在 A65 或 EV74 上執行 PointPillars 與 BEVFusion 的核心函式庫 LiDAR 運算以及相機轉 BEV 運算。每個節點都在您選擇的目標上執行,不會退回其他目標。請參閱 LiDAR 與 BEV 核心節點。 - 預設的公開
Input直接連接至單一模型影像輸入時,現在會繼承其宣告的影像格式。明確的輸入選項仍具決定權;有歧義的連接必須使用明確選項。這會改變樣本的解讀方式,而不新增負載複製。 - 圖組合現在會將一個節點物件視為一個邏輯頂點。重複插入與重疊的片段匯入會以不可分割的方式失敗,而重複呼叫
connect()時會重複使用既有節點進行扇出。 - 每個具體化的管線區段現在都會在
build()期間驗證最終的 GStreamer 名稱,不需另外明確呼叫validate()。名稱重複或遺漏時會以misconfig.pipeline_shape失敗,而不會產生截斷的管線。 - 自訂片段現在會報告所有明確名稱,並連同宣告一起轉換具名 pad 參照。名稱衝突會直接遭到拒絕,不會自動重新命名。
| 版本 | 相容的 Palette SDK | 備註 |
|---|---|---|
| 0.6.1 | 3.0.0.1 | Neat Library 0.6.1 |
| 0.6.0 | 3.0.0.0 | Neat Library 0.6.0 |
| 0.5.0 | 2.1.3.1 | Neat Library 0.5.0 |
| 0.4.0 | 2.1.3.0 | Neat Library 0.4.0 |
| 0.3.0 | 2.1.2.3 | Neat Library 0.3.0 |
| 0.2.2 | 2.1.2.2 | Neat Library 0.2.2 |
| 0.2.1 | 2.1.2.1 | Neat Library 0.2.1 |
| 0.2.0 | 2.1.2 | Neat Library 0.2.0 |
| 0.1.0 | 2.0.0 | Neat Library 0.1.0 |