久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

模型調(diào)用實(shí)戰(zhàn)指南:本地加載、API調(diào)用與跨語(yǔ)言部署全解析

模型調(diào)用實(shí)戰(zhàn)指南:本地加載、API調(diào)用與跨語(yǔ)言部署全解析 “模型調(diào)用”這四個(gè)字看起來(lái)簡(jiǎn)單但凡是真在業(yè)務(wù)里跑過模型的人都懂——它一個(gè)詞背后能塞下八種完全不同的場(chǎng)景。你可能是把下載好的.safetensors文件用 transformers 加載起來(lái)做個(gè)文本分類也可能是寫一個(gè) Python 腳本去請(qǐng)求 DeepSeek 的 API 做對(duì)話還可能是用 C# 調(diào)用一個(gè) Python 封裝好的推薦模型又或者是在項(xiàng)目里加載一個(gè) ONNX、PB 格式的視覺模型做推理。這些場(chǎng)景統(tǒng)稱“調(diào)用模型”但技術(shù)棧、踩坑點(diǎn)、排查方式幾乎完全不重疊。這篇東西不是教科書是我自己這些年把各種模型從“能跑”搞成“穩(wěn)定跑”的實(shí)踐記錄。我會(huì)按調(diào)用形態(tài)拆開講每個(gè)場(chǎng)景都給出可直接落地的代碼、參數(shù)和避坑經(jīng)驗(yàn)。無(wú)論你是剛?cè)腴T的算法工程師、做后端集成的開發(fā)還是研究怎么把開源模型塞進(jìn)自己產(chǎn)品里的人應(yīng)該都能從中找到對(duì)應(yīng)的解決思路。1. 先搞清楚你所說的“調(diào)用模型”到底屬于哪一類我在很多技術(shù)群里看到過這樣的對(duì)話一個(gè)人問“模型調(diào)用報(bào)錯(cuò)了怎么辦”底下的人開始猜——是顯存不夠是 API key 過期是 shape 不匹配問了一圈才發(fā)現(xiàn)他問的是另外一件事。所以我覺得有必要先做一次分類。如果你能精確地說出自己屬于哪一類后續(xù)問題基本能縮小到很小的范圍內(nèi)。1.1 按部署形態(tài)分本地加載和 API 調(diào)用這是最根本的分類。本地加載是指模型文件比如.pth、.onnx、.bin、.pb、.safetensors已經(jīng)躺在你的磁盤上你用推理框架把它讀進(jìn)內(nèi)存然后用處理器或顯卡跑前向計(jì)算。常見的框架是 PyTorch、ONNX Runtime、TensorFlow。這種方式的好處是延遲低、沒有網(wǎng)絡(luò)波動(dòng)、數(shù)據(jù)不出內(nèi)網(wǎng)適合對(duì)隱私和實(shí)時(shí)性要求高的場(chǎng)景。API 調(diào)用是指模型部署在某個(gè)遠(yuǎn)端服務(wù)上你通過 HTTP/gRPC/WebSocket 請(qǐng)求它。你不需要關(guān)心模型文件在哪、用什么框架加載只需要關(guān)心接口協(xié)議、鑒權(quán)方式、參數(shù)格式。OpenAI 的 GPT 系列、DeepSeek 開放平臺(tái)、阿里通義千問的 API都是這種模式。它的好處是免運(yùn)維、彈性擴(kuò)容適合業(yè)務(wù)快速迭代、不想自己養(yǎng) GPU 服務(wù)器的團(tuán)隊(duì)。這兩種模式的“調(diào)用”完全不是一回事。本地加載問題往往是環(huán)境依賴、算子兼容性、顯存管理API 調(diào)用問題往往是網(wǎng)絡(luò)超時(shí)、限流、鑒權(quán)失敗、返回結(jié)構(gòu)變化。如果你把這兩類問題混在一起排查會(huì)非常痛苦。1.2 按調(diào)用方式分同進(jìn)程調(diào)用和跨語(yǔ)言調(diào)用同進(jìn)程調(diào)用就是你在寫 Python調(diào)用的也是 Python 接口的模型庫(kù)。最常見的是model AutoModel.from_pretrained(...)然后model.predict()或model.generate()。這個(gè)鏈路里你寫代碼的語(yǔ)言、模型推理的語(yǔ)言、數(shù)據(jù)處理的框架是同一個(gè)生態(tài)里問題相對(duì)可控??缯Z(yǔ)言/跨進(jìn)程調(diào)用是指你的主業(yè)務(wù)系統(tǒng)不是模型所在的生態(tài)。比如你是一個(gè) Java 后端或者 C# 桌面程序或者前端 JavaScript 頁(yè)面你需要讓這些語(yǔ)言跑起來(lái)一個(gè) Python 模型。這時(shí)候就得引入某種中間通道可以是 HTTP 服務(wù)封裝、可以是進(jìn)程間管道、可以是 Socket也可以是用 ONNX Runtime 的對(duì)應(yīng)語(yǔ)言綁定直接加載模型。這層分類的價(jià)值在于它決定了你的核心工作量在哪。跨語(yǔ)言調(diào)用至少三分之一的坑會(huì)出在“通信協(xié)議”和“數(shù)據(jù)序列化”上而不是模型本身。所以當(dāng)你準(zhǔn)備開始一個(gè)模型調(diào)用任務(wù)時(shí)先花十分鐘明確自己在哪個(gè)象限里再?zèng)Q定搜索的關(guān)鍵詞和處理路徑。2. 本地模型調(diào)用從模型文件到穩(wěn)定推理的完整鏈路本地調(diào)用是模型“私有化落地”最常見的方式。這一節(jié)我會(huì)把模型文件格式、加載方式、推理過程中的關(guān)鍵參數(shù)講透。很多人以為模型下載下來(lái)就能跑實(shí)際上格式轉(zhuǎn)換和依賴對(duì)齊才是大頭。2.1 模型文件格式先認(rèn)識(shí)你手里的文件我經(jīng)常收到私信“我這里有一個(gè).pb模型用 PyTorch 能加載嗎”答案是不能直接加載。模型文件格式基本決定了你的工具鏈。.pth/.pt是 PyTorch 的序列化格式里面通常是state_dict或完整的nn.Module。加載時(shí)你必須保證代碼里的模型結(jié)構(gòu)定義和保存時(shí)一致否則會(huì)出現(xiàn)size mismatch。這也是我最煩的格式換了一版代碼老模型就加載不了。所以我在團(tuán)隊(duì)里通常建議訓(xùn)練模型用.pth保存發(fā)布模型優(yōu)先轉(zhuǎn)成.onnx或.safetensors。.safetensors是 HuggingFace 推的格式設(shè)計(jì)目標(biāo)就是安全、快。它不像.pth那樣用 pickle 序列化避免了惡意代碼執(zhí)行的風(fēng)險(xiǎn)而且支持內(nèi)存映射加載加載速度很快?,F(xiàn)在 transformers 庫(kù)默認(rèn)下載的就是這種格式。.onnx是跨平臺(tái)、跨框架的標(biāo)準(zhǔn)中間格式。它的核心價(jià)值在于你可以用 PyTorch 訓(xùn)練導(dǎo)出成 ONNX然后用 ONNX Runtime 在 CPU/GPU/NPU 上跑推理甚至可以轉(zhuǎn)到 Windows ML、TensRT 上。工業(yè)部署里ONNX 幾乎是“通用語(yǔ)言”。.pb是 TensorFlow 的 SavedModel 格式一般用 TF 生態(tài)加載。但現(xiàn)在 TF 的兼容性問題比較多很多人的.pb模型其實(shí)也被轉(zhuǎn)成了 ONNX 再部署。這里有一個(gè)非常實(shí)用的判斷方法拿到模型文件后先看擴(kuò)展名再去對(duì)應(yīng)框架的官方文檔確認(rèn)加載 API千萬(wàn)不要用 AI 生成的通用代碼硬懟。我見過太多人拿著一份用 transformers 加載本地大模型的代碼卻把自己的.pth模型文件塞進(jìn)去結(jié)果自然是一堆無(wú)法理解的報(bào)錯(cuò)。2.2 用 transformers 加載本地模型一套代碼打天下如果你做的 NLP 或者多模態(tài)任務(wù)HuggingFace transformers 是事實(shí)標(biāo)準(zhǔn)。它不僅能從官方 hub 下載模型也能直接加載本地目錄。from transformers import AutoModel, AutoTokenizer model_dir ./checkpoints/my_model tokenizer AutoTokenizer.from_pretrained(model_dir) model AutoModel.from_pretrained(model_dir) # 推理 inputs tokenizer(今天天氣怎么樣, return_tensorspt) with torch.no_grad(): outputs model(**inputs)這段代碼看起來(lái)簡(jiǎn)單但有幾個(gè)非常影響成敗的細(xì)節(jié)。第一個(gè)細(xì)節(jié)是from_pretrained的local_files_onlyTrue參數(shù)。如果模型目錄里缺配置或少權(quán)重文件這個(gè)參數(shù)會(huì)直接報(bào)錯(cuò)而不是偷偷去聯(lián)網(wǎng)下載。這個(gè)行為在某些場(chǎng)景下非常重要比如內(nèi)網(wǎng)環(huán)境或者模型文件很大不想意外觸發(fā)下載。第二個(gè)細(xì)節(jié)是設(shè)備指定。不要在跑大模型的地方裸用 CPU除非你明確知道自己要這么做。顯存不夠時(shí)可以加device_mapauto讓 transformers 自動(dòng)分配層到 GPU 和 CPU 之間。這是我在86GB的模型放到24GB顯卡上運(yùn)行的常用招數(shù)——雖然慢但至少能跑。model AutoModel.from_pretrained( model_dir, device_mapauto, torch_dtypeauto )第三個(gè)細(xì)節(jié)是torch_dtype。加載 7B、13B 這種量級(jí)的模型時(shí)默認(rèn) FP32 會(huì)把顯存撐爆。設(shè)置成torch_dtypeauto后框架會(huì)讀取模型保存時(shí)的精度通常是 FP16 或者 BF16顯存占用直接砍半。我有一次忘了加這個(gè)參數(shù)一個(gè) 7B 模型直接把 24GB 顯存干滿了還觸發(fā)了一次機(jī)器死機(jī)。這算是我自己踩過的比較蠢的坑。2.3 傳統(tǒng)機(jī)器學(xué)習(xí)模型的加載不要什么都套深度學(xué)習(xí)的路子深度學(xué)習(xí)模型是大頭但工業(yè)場(chǎng)景里 LightGBM、XGBoost 這類樹模型仍然很常見。它們的調(diào)用方式和神經(jīng)網(wǎng)絡(luò)完全不同可有人總是習(xí)慣性地去“轉(zhuǎn)格式”或者“架服務(wù)”把簡(jiǎn)單問題復(fù)雜化。LightGBM 的落地方式一般分為兩種第一種是用 Python 訓(xùn)練然后保存為.txt或.json格式的模型文件在 Python 側(cè)用lgb.Booster或lgb.LGBMRegressor加載。第二種是轉(zhuǎn)成 PMML、ONNX 后用其他語(yǔ)言推理。我這里推薦第一種理由是 LightGBM 原生的加載方式最穩(wěn)、最快、功能最全。import lightgbm as lgb model lgb.Booster(model_filemodel.txt) # 預(yù)測(cè) y_pred model.predict(data) # 如果你需要輸出特征重要性 importance model.feature_importance()注意這里data必須是一個(gè)帶feature_name的二維結(jié)構(gòu)順序必須和訓(xùn)練時(shí)一致。這個(gè)坑幾乎每個(gè)人都踩過訓(xùn)練時(shí)用了pandas.DataFrame特征順序是 A/B/C預(yù)測(cè)時(shí)用了numpy.ndarray沒注意順序結(jié)果模型能跑但結(jié)果完全是亂的而且很難發(fā)現(xiàn)。我的經(jīng)驗(yàn)是預(yù)測(cè)前先打一條診斷日志看一下數(shù)據(jù)維度和特征名是否和模型期望的一致。這能省掉后期大量 debug 時(shí)間。2.4 ONNX Runtime統(tǒng)一語(yǔ)言、繞過框架依賴如果你需要跨語(yǔ)言調(diào)用模型還有一個(gè)非常理想的方案先用 PyTorch 導(dǎo)出 ONNX然后用 ONNX Runtime 在 Python、C、Java、C# 等語(yǔ)言里統(tǒng)一推理。導(dǎo)出 ONNX 的步驟大概是import torch model MyModel().eval() dummy_input torch.randn(1, 3, 224, 224) torch.onnx.export( model, dummy_input, model.onnx, opset_version17, do_constant_foldingTrue, input_names[input], output_names[output], dynamic_axes{ input: {0: batch_size}, output: {0: batch_size} } )導(dǎo)出之后在 Python 里用 ONNX Runtime 加載import onnxruntime as ort sess ort.InferenceSession(model.onnx, providers[CUDAExecutionProvider, CPUExecutionProvider]) result sess.run( [output], {input: data} )這個(gè)方案的好處在實(shí)踐中非常明顯。首先ONNX 模型里已經(jīng)包含了計(jì)算圖和權(quán)重你不再需要原始的模型結(jié)構(gòu)代碼。其次它天然兼容 C#/Java/C 這些語(yǔ)言的運(yùn)行時(shí)跨語(yǔ)言調(diào)用就不再需要“Python 服務(wù) HTTP 轉(zhuǎn)發(fā)”這種復(fù)雜鏈路了。缺點(diǎn)也很直接某些自定義算子比如動(dòng)態(tài) shape 的 NMS導(dǎo)出時(shí)會(huì)卡住需要查 ONNX 算子支持表。這里給個(gè)實(shí)操建議導(dǎo)出 ONNX 時(shí)pyTorch 的版本和 onnx 官方文檔匹配非常重要。我用 PyTorch 2.x 導(dǎo)出時(shí)需要opset_version 16否則一些新算子會(huì)報(bào)錯(cuò)。另外dynamic_axes一定要設(shè)置否則你的模型只能固定 batch size 推理這在真實(shí)業(yè)務(wù)里往往不夠用。3. API 模型調(diào)用面向服務(wù)的調(diào)用實(shí)踐如果說本地加載是“自己養(yǎng)一條狗”那 API 調(diào)用就是“請(qǐng)人遛狗”你只管給它指令它跑完把球叼回來(lái)。API 調(diào)用在今天的 AI 應(yīng)用里是絕對(duì)主力尤其是大模型場(chǎng)景。我自己經(jīng)常處理這樣的需求后端集成一個(gè) DeepSeek API 做代碼生成、用 OpenAI 兼容接口做智能客服、甚至用 langgraph 寫多智能體工具調(diào)用。這些鏈路里有共通的模式也有一堆細(xì)節(jié)坑。3.1 REST API 調(diào)用的通用套路所有大模型平臺(tái)的 API 幾乎都是 OpenAI 兼容協(xié)議。不管是 DeepSeek、通義千問、Moonshot還是你本地用 Ollama 起的服務(wù)請(qǐng)求結(jié)構(gòu)基本一致import requests import json url http://localhost:11434/v1/chat/completions # 以本地ollama為例 # 換成云端就是 https://api.deepseek.com/chat/completions payload { model: deepseek-chat, messages: [ {role: system, content: 你是一個(gè)樂于助人的助手}, {role: user, content: 幫我寫一個(gè)Python快速排序} ], temperature: 0.7, stream: False } headers { Authorization: Bearer sk-xxxx, Content-Type: application/json } resp requests.post(url, headersheaders, jsonpayload, timeout60) resp.raise_for_status() data resp.json() print(data[choices][0][message][content])這段代碼使用的Authorization: Bearer是幾乎所有 API 平臺(tái)的通用鑒權(quán)方式。即使你是本地調(diào)用 Ollama 這類工具它的/v1接口也遵守這個(gè)格式只是 token 隨便填一個(gè)就行。你需要注意的核心參數(shù)有三個(gè)。第一個(gè)是max_tokens或max_new_tokens。如果你不設(shè)置某些平臺(tái)會(huì)用一個(gè)很小的默認(rèn)值比如 256導(dǎo)致結(jié)果被截?cái)?。如果你設(shè)置太大會(huì)觸發(fā)限流或者費(fèi)用過高。我建議設(shè)置一個(gè)合理的值比如代碼生成 1024長(zhǎng)文本摘要 2048按場(chǎng)景靈活調(diào)整。第二個(gè)是temperature。這不是一個(gè)“越高越好”的參數(shù)而是“越低越確定、越高越發(fā)散”。做寫代碼、寫 SQL 這類需要精確度的任務(wù)我一般設(shè)0.2做創(chuàng)意文案設(shè)0.8做客服回復(fù)設(shè)0.5。很多人拿到 API 就直接用默認(rèn)值結(jié)果發(fā)現(xiàn)結(jié)果不夠穩(wěn)定實(shí)際上溫度是控制“穩(wěn)定輸出”最直接的手段。第三個(gè)是stream。當(dāng)你的應(yīng)用需要像 ChatGPT 那樣打字機(jī)式輸出時(shí)必須開流式。當(dāng)你在做后臺(tái)批處理、離線批量調(diào)用時(shí)就別開流式否則服務(wù)器端會(huì)堆積一堆未消費(fèi)的事件。流式處理的代碼我會(huì)在下面專門講。3.2 Python 調(diào)用 API 的標(biāo)準(zhǔn)姿勢(shì)不要只依賴 requests少量調(diào)用用requests完全沒問題但一旦你的任務(wù)變成“批量構(gòu)造幾百條 prompt、依次調(diào)用、處理好失敗和并發(fā)”requests寫起來(lái)會(huì)非常別扭。我建議直接用openai這個(gè) Python SDK因?yàn)樗烊恢С謱?duì)流式輸出的處理。from openai import OpenAI client OpenAI( api_keysk-xxx, # 云端API的key base_urlhttp://localhost:11434/v1 # 本地ollama/lmstudio的地址 ) response client.chat.completions.create( modelqwen2.5:7b, messages[{role: user, content: 用三句話解釋什么是數(shù)據(jù)庫(kù)索引}], temperature0.3, streamTrue ) full_text [] for chunk in response: delta chunk.choices[0].delta.content if delta: full_text.append(delta) print(delta, end, flushTrue) print(\n---完整輸出---) print(.join(full_text))注意這里的base_url是可以隨意指向的。它既可以指向 DeepSeek 的官方地址https://api.deepseek.com/v1也可以指向你自己電腦上用 LM Studio / Ollama 起的本地服務(wù)地址。這種兼容性簡(jiǎn)直是“模型調(diào)用”這領(lǐng)域的潤(rùn)滑劑。實(shí)操心得當(dāng)你切換客戶端時(shí)盡量統(tǒng)一用這個(gè) SDK而不是每接一個(gè)新平臺(tái)就換一個(gè)新庫(kù)。因?yàn)?OpenAI 兼容協(xié)議已經(jīng)被幾乎每個(gè)平臺(tái)支持用同一個(gè) SDK 可以大幅減少學(xué)習(xí)成本和迭代風(fēng)險(xiǎn)。3.3 鑒權(quán)、限流與錯(cuò)誤重試這是穩(wěn)定性的勝負(fù)手API 調(diào)用寫出來(lái)不難難在“穩(wěn)定運(yùn)行很久不崩”。在大規(guī)模調(diào)用場(chǎng)景下你一定會(huì)撞上 401 鑒權(quán)失敗、429 限流、超時(shí)甚至是服務(wù)器 5xx 錯(cuò)誤。處理不當(dāng)這些錯(cuò)誤就會(huì)像坦克一樣碾過你的任務(wù)隊(duì)列。我的標(biāo)準(zhǔn)做法是用指數(shù)退避重試同時(shí)區(qū)分錯(cuò)誤類型。401 和 403 不要重試因?yàn)檫@是配置錯(cuò)誤429 和 5xx 可以重試因?yàn)檫@是臨時(shí)性問題。import time import random def call_with_retry(client, payload, max_retries4): for attempt in range(max_retries): try: return client.chat.completions.create(**payload) except Exception as e: status getattr(e, status_code, None) if status in (401, 403): raise if attempt max_retries - 1: raise backoff (2 ** attempt) random.uniform(0, 1) time.sleep(backoff)這段代碼里的time.sleep就是退避。兩次請(qǐng)求之間等待1秒、2秒、4秒、8秒再加上一個(gè)隨機(jī)抖動(dòng)避免所有請(qǐng)求在失敗后同時(shí)重試造成雪崩。重試一定要加隨機(jī)抖動(dòng)不然你的服務(wù)會(huì)在故障恢復(fù)的瞬間自己把自己打死這是我踩過的最痛的坑之一。批處理場(chǎng)景還有一個(gè)小技巧限制并發(fā)數(shù)。直接用ThreadPoolExecutor寫并發(fā)很容易把 API 服務(wù)打成 429。我一般用Semaphore把并發(fā)控制在 2 到 8 之間具體看平臺(tái)的限流規(guī)則。合理并發(fā)下批量跑 1000 條 prompt 的速度非常可觀。4. 跨語(yǔ)言與跨框架調(diào)用你可能不是那個(gè)“用 Python 寫模型”的人很多時(shí)候模型并不是由算法的同學(xué)直接消費(fèi)。真正的消費(fèi)者是 Java 后端、C# 桌面端、前端 JavaScript甚至移動(dòng)端。這一節(jié)的題目就是當(dāng)你的主語(yǔ)言不是 Python怎么把模型“接”進(jìn)來(lái)。4.1 統(tǒng)一萬(wàn)物的 HTTP 服務(wù)模型即服務(wù)跨語(yǔ)言調(diào)用最簡(jiǎn)單、也最推薦的方案就是用 Python 后端把模型包成一個(gè) HTTP 服務(wù)。主語(yǔ)言Java/C#/JS只需要發(fā)一個(gè)請(qǐng)求拿一個(gè) JSON 響應(yīng)。這個(gè)方法沒任何花哨但勝在解耦徹底你可以單獨(dú)升級(jí)模型代碼主業(yè)務(wù)完全不需要改動(dòng)。用 FastAPI 封一個(gè)模型服務(wù)的代碼很多開源項(xiàng)目里都有。我這里給一個(gè)帶生命周期管理的最小例子from fastapi import FastAPI, HTTPException from pydantic import BaseModel import torch from transformers import AutoTokenizer, AutoModel app FastAPI() class InferRequest(BaseModel): texts: list[str] model_dir ./models/embedding_model tokenizer None model None app.on_event(startup) def load_model(): global tokenizer, model tokenizer AutoTokenizer.from_pretrained(model_dir) model AutoModel.from_pretrained(model_dir) model.eval() model.to(cuda) app.post(/embed) async def embed(req: InferRequest): if model is None: raise HTTPException(status_code503, detailmodel not ready) inputs tokenizer(req.texts, paddingTrue, truncationTrue, max_length512, return_tensorspt) inputs {k: v.to(cuda) for k, v in inputs.items()} with torch.no_grad(): outputs model(**inputs) # 取句向量 sent_vec outputs.last_hidden_state[:, 0, :] return {embeddings: sent_vec.cpu().tolist()}這個(gè)服務(wù)跑起來(lái)后你用 C# 的HttpClient、Java 的RestTemplate、JS 的fetch都能輕松調(diào)用。跨語(yǔ)言調(diào)用最大的優(yōu)勢(shì)就在這里協(xié)議是標(biāo)準(zhǔn) HTTP數(shù)據(jù)是標(biāo)準(zhǔn) JSON兩邊完全不關(guān)心對(duì)方的內(nèi)部實(shí)現(xiàn)。注意事項(xiàng)啟動(dòng)時(shí)加載模型這個(gè)動(dòng)作非常關(guān)鍵。模型文件如果很大加載可能要幾十秒甚至幾分鐘。把這個(gè)加載放在 startup 事件里可以避免第一個(gè)請(qǐng)求到達(dá)時(shí)才觸發(fā)加載導(dǎo)致的超時(shí)。另外你以為把model.to(cuda)放到 startup 就完了不你還得處理 CUDA 顯存預(yù)熱問題。我建議在加載完成后跑一次空推理把顯存顯式占住否則第一次推理會(huì)突然觸發(fā) CUDA context 初始化導(dǎo)致極慢的首次響應(yīng)。4.2 直接跨語(yǔ)言調(diào)用ONNX Runtime 架起橋梁如果你不想起一個(gè) HTTP 服務(wù)或者擔(dān)心網(wǎng)絡(luò)傳輸開銷和運(yùn)維復(fù)雜度那 ONNX Runtime 就是跨語(yǔ)言調(diào)用的又一條路。在 C# 里加載 ONNX 模型通常需要 NuGet 包Microsoft.ML.OnnxRuntimeusing Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; var session new InferenceSession(model.onnx); var input new DenseTensorfloat(new float[1, 3, 224, 224], new[] { 1, 3, 224, 224 }); var inputs new ListNamedOnnxValue { NamedOnnxValue.CreateFromTensor(input, input) }; using var results session.Run(inputs); var output results.First().AsTensorfloat();注意這里的input必須和導(dǎo)出 ONNX 時(shí)的input_names一致。很多人在這一步栽跟頭導(dǎo)出的名字是input.1但在 C# 那邊寫的卻又是input。建議你在導(dǎo)出之前就先確定好所有輸入輸出名或者先跑一次 Python 端 ONNX Runtime 驗(yàn)證再拿到 C# 里去跑。類似的思路在 JavaScript 側(cè)也有用onnxruntime-web或onnxruntime-node。但在瀏覽器里跑 Transformer 這種大模型我目前仍然不推薦初始化時(shí)間和內(nèi)存占用都不友好。如果實(shí)在要在前端做請(qǐng)先用小模型做性能驗(yàn)證再?zèng)Q定部署策略。4.3 JNI/JNA 調(diào) C最后的手段有些場(chǎng)景模型是 C 寫的推理庫(kù)而你的主應(yīng)用是 Java 或 Kotlin比如 Android 上的 NPU/GPU 推理。這時(shí)候繞不開 JNI 或者 JNA。我知道這個(gè)話題比較硬核這里只講一個(gè)最容易踩的坑JNI 的命名規(guī)則和符號(hào)導(dǎo)出問題。JNI 函數(shù)名必須是Java_包名_類名_方法名并且底層extern C符號(hào)要正確導(dǎo)出。如果你是用 CMake 編譯.so記得在頭文件里加extern C否則 C 名字修飾會(huì)讓 JVM 找不到符號(hào)。排查時(shí)可以看報(bào)錯(cuò)UnsatisfiedLinkError: Native method not found多半是簽名不對(duì)或者.so沒打進(jìn)去。java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol多半是依賴的其他.so版本不對(duì)Linux 下可以用ldd排查。我個(gè)人的傾向是除非性能要求被逼到極限否則不建議走這條鏈路。標(biāo)準(zhǔn)做法是先問一句“模型能在你那邊起個(gè) HTTP 服務(wù)嗎”絕大多數(shù)情況下答案是可以。JNI 帶來(lái)的額外心智負(fù)擔(dān)和版本兼容性風(fēng)險(xiǎn)很容易讓一個(gè)小項(xiàng)目變成泥潭。4.4 跨文件、跨模塊調(diào)用的組織方式熱詞里有“跨文件調(diào)用”它在模型場(chǎng)景的意義是你的模型管理代碼、數(shù)據(jù)預(yù)處理代碼、業(yè)務(wù)邏輯代碼不能全堆在一個(gè)文件里。我通常會(huì)按下面這種結(jié)構(gòu)組織工程project/ models/ # 模型文件和 tokenizer src/ data_prepare.py # 數(shù)據(jù)清洗、特征工程 model_loader.py # 模型加載和資源管理 inference.py # 推理邏輯 app.py # API 服務(wù)入口 config/ config.yaml # 模型路徑、環(huán)境變量、超參核心原則是模型加載邏輯單獨(dú)隔離出來(lái)。這樣當(dāng)模型遷移、換框架、換路徑時(shí)你只需要改一個(gè)模塊而不是在業(yè)務(wù)代碼里到處打補(bǔ)丁。5. 常見問題與排查技巧實(shí)錄分享幾個(gè)我在實(shí)際開發(fā)中反復(fù)遇到、幾乎每個(gè)跑模型的工程師都會(huì)碰到的問題。5.1 顯存 OOM不是內(nèi)存不夠是你沒算好賬OOMOut of Memory是本地模型調(diào)用最常見的問題。癥狀非常直觀程序跑起來(lái)幾秒鐘就提示CUDA out of memory。顯存分配要算三個(gè)部分模型權(quán)重、激活值/中間張量、推理框架的上下文開銷。在加載時(shí)如果模型權(quán)重已經(jīng)占了 14GB你剩下可用顯存少于 4GB跑一個(gè)大 batch 就可能直接 OOM。我的幾個(gè)標(biāo)準(zhǔn)操作固定 CUDA 設(shè)備和限制顯存分配os.environ[CUDA_VISIBLE_DEVICES] 0。推理時(shí)建議使用torch.inference_mode()而不是torch.no_grad()前者更輕量。盡量在推理前清理不再需要的張量用del刪除后調(diào)用torch.cuda.empty_cache()。注意這個(gè)操作只是釋放沒用的緩存不是萬(wàn)能解藥。還有一個(gè)很容易忽略的點(diǎn)CPU 和 GPU 之間傳數(shù)據(jù)時(shí)tolist()會(huì)把 GPU 上的 tensor 拷回內(nèi)存。如果你的 embedding 是 10000 條 × 1024 維一次性tolist()可能把 8GB 內(nèi)存直接吃滿。這種情況應(yīng)該分批處理每次只轉(zhuǎn)一部分及時(shí)釋放。5.2 張量形狀不匹配報(bào)錯(cuò)信息已經(jīng)告訴你怎么修size mismatch for decoder.embed_tokens.weight: copying a param with shape torch.Size([32000, 768]) ...這種報(bào)錯(cuò)幾乎人人都會(huì)遇到。原因有幾種模型訓(xùn)練時(shí)用了不同的詞表大小、加載的分詞器和保存時(shí)的分詞器不一致、模型的 hidden_size 被改過。處理的第一步永遠(yuǎn)是確認(rèn)加載模型的 config 和當(dāng)前內(nèi)存里的模型結(jié)構(gòu)定義是否一致。對(duì) transformers 模型打印model.config和tokenizer.vocab_size。對(duì) LightGBM打印model.num_feature()。對(duì) ONNX打印session.get_inputs()和session.get_outputs()。先看元信息再談推理。sess ort.InferenceSession(model.onnx) for inp in sess.get_inputs(): print(inp.name, inp.shape, inp.type)看到真實(shí)信息后90%的問題都能定位。剩下 10% 是算子不支持或者動(dòng)態(tài) shape 問題那就需要回到導(dǎo)出源頭去改配置了。5.3 模型繁忙、請(qǐng)求超時(shí)和并發(fā)控制熱詞里有“模型繁忙請(qǐng)稍后再試”這幾乎是必然要遇到的情況。它的本質(zhì)是你的調(diào)用方和模型服務(wù)端之間沒有做好并發(fā)控制。有些平臺(tái)會(huì)返回 429有些本地推理服務(wù)比如 transform 的 pipeline 非線程安全會(huì)直接報(bào)錯(cuò)。解決的通用思路是限制客戶端并發(fā)數(shù)加 Semaphore。服務(wù)端側(cè)做排隊(duì)比如用 FastAPI 時(shí)給推理函數(shù)加鎖。啟動(dòng)時(shí)預(yù)熱模型并測(cè)試一次推理讓 CUDA 上下文就緒。跨語(yǔ)言調(diào)用時(shí)尤其要注意超時(shí)設(shè)置。requests.post如果timeout60而模型推理本身可能要 30 秒再加上排隊(duì)時(shí)長(zhǎng)就很容易超時(shí)。我遇到過最尷尬的情況就是客戶端因?yàn)?60 秒超時(shí)已經(jīng)報(bào)錯(cuò)并放棄了請(qǐng)求而服務(wù)端其實(shí)還在辛苦推理。這種問題在日志里特別難查兩邊看起來(lái)都沒有明顯異常。我的建議是服務(wù)端接口最好支持非阻塞式的任務(wù)提交輪詢或者直接把超時(shí)設(shè)成足夠大的值比如 300 秒再在客戶端做并發(fā)控制。簡(jiǎn)單粗暴但有效。5.4 模型文件被篡改、版本不對(duì)導(dǎo)致的詭異問題模型中毒攻擊、模型文件損壞這類話題近年在安全圈特別火。你是否想過模型調(diào)用鏈路上權(quán)重文件可能會(huì)被中間人篡改在網(wǎng)絡(luò)安全領(lǐng)域這被稱作“供應(yīng)鏈投毒”。模型是一個(gè)重災(zāi)區(qū)一個(gè)被篡改的權(quán)重文件如果你沒有驗(yàn)證其哈希你可能根本不知道它已經(jīng)變了。而模型攻擊者可以讓模型在特定輸入時(shí)產(chǎn)生完全不同的輸出而絕大多數(shù)時(shí)候表現(xiàn)正?!@種攻擊比例子要隱蔽得多。所以如果你負(fù)責(zé)一個(gè)對(duì)安全性要求較高的項(xiàng)目發(fā)布模型或者從外部獲取模型時(shí)一定要校驗(yàn) SHA-256 哈希。sha256sum model.safetensors然后在代碼里比對(duì)這串哈希是否符合預(yù)期。這是很多從業(yè)者容易忽略、但一旦出問題就是大事故的環(huán)節(jié)。模型版本的控制和管理也應(yīng)該像代碼版本一樣嚴(yán)格——用git lfs、用模型注冊(cè)表而不是把.pth文件直接扔百度網(wǎng)盤然后微信發(fā)來(lái)發(fā)去。6. 關(guān)于“輸入側(cè)”調(diào)用視覺與前端模型加載的補(bǔ)充模型調(diào)用還有一個(gè)容易被人忽略的側(cè)面當(dāng)模型不是做“推理計(jì)算”而是展示一個(gè) 3D 文件或一個(gè)視覺對(duì)象時(shí)調(diào)用的語(yǔ)義雖然不同但底層邏輯鏈條是相通的。比如 Cesium 加載 OBJ、glTF 模型和加載一個(gè) ONNX 模型做推理雖然方向完全不同但核心都涉及“外部資源和你的運(yùn)行環(huán)境如何適配、如何解析、如何渲染”。特別是 Cesium 這種三維地球引擎加載 OBJ 時(shí)常遇到坐標(biāo)軸不一致、紋理路徑不對(duì)的問題你要做的不是“訓(xùn)練一個(gè)模型”而是“把一個(gè)已有 3D 資源正確接入場(chǎng)景”。這種場(chǎng)景下我的建議是先確認(rèn)資源格式和坐標(biāo)系統(tǒng)再談顯示效果。OBJ 和 glTF 的坐標(biāo)系差異Y 軸向上還是 Z 軸向上是一個(gè)經(jīng)典大坑。如果你拿到的 OBJ 模型是 3ds Max 導(dǎo)出的Z 軸向上而 Cesium 默認(rèn)是 Z 向上直接加載往往會(huì)出現(xiàn)模型躺倒的問題。辦法是改模型的轉(zhuǎn)換矩陣或者預(yù)先用 Blender/腳本旋轉(zhuǎn) 90 度導(dǎo)出成 glTF。同理如果模型是.gltf注意它的.bin和紋理文件存放位置路徑錯(cuò)一個(gè)字母整張貼圖就會(huì)變紫色。很多人在本地測(cè)試好好的一部署到服務(wù)器上模型就“變了樣”基本都是相對(duì)路徑解析問題。這個(gè)思路也可以平移到圖像模型加載、目標(biāo)檢測(cè)模型預(yù)處理等一切“輸入側(cè)模型調(diào)用”。7. 從“能跑”到“穩(wěn)定跑”我的個(gè)人經(jīng)驗(yàn)總結(jié)最后分享幾句實(shí)在話都是這些年被現(xiàn)實(shí)教育出來(lái)的。第一句模型調(diào)用的穩(wěn)定性核心在“資源管理”而不是“模型準(zhǔn)確率”。顯存、內(nèi)存、連接數(shù)、超時(shí)時(shí)間、并發(fā)大小這些決定你的服務(wù)能不能在線上活過一個(gè)月。模型準(zhǔn)確率每天只變化一次資源問題可能每五分鐘就爆炸一次。第二句任何時(shí)候都不要在生產(chǎn)環(huán)境里裸寫from_pretrained而不指定local_files_only。一旦服務(wù)器網(wǎng)絡(luò)抖動(dòng)框架會(huì)嘗試聯(lián)網(wǎng)下載然后掛在那里幾分鐘你以為模型加載很慢其實(shí)它在等網(wǎng)絡(luò)超時(shí)。這個(gè)坑隱秘且致命。第三句學(xué)會(huì)看日志特別是模型調(diào)用鏈路里的超時(shí)日志。很多“模型調(diào)不動(dòng)”的問題其實(shí)都發(fā)生在 HTTP 層、序列化層、或磁盤 IO 層而不是模型推理本身。先把日志對(duì)齊再談優(yōu)化模型。第四句模型調(diào)用不是一錘子買賣。你今天把一個(gè)模型調(diào)通了明天框架升級(jí)了、顯卡驅(qū)動(dòng)變了、Python 版本換了它就可能不跑了。所以工程上一定要做版本快照requirements.txt鎖定所有依賴的精確版本GPU 驅(qū)動(dòng)和 CUDA 版本寫進(jìn)文檔里。不要相信“下次重新安裝應(yīng)該沒問題”這種僥幸。如果你正在準(zhǔn)備把某個(gè)模型接入自己的產(chǎn)品我建議你從最小閉環(huán)開始先把一個(gè)最簡(jiǎn)單請(qǐng)求跑通再逐步加并發(fā)、加異常處理、加安全校驗(yàn)。不要一上來(lái)就搭一個(gè)高大上的微服務(wù)架構(gòu)。模型調(diào)用圈子里的經(jīng)驗(yàn)是先把一個(gè)點(diǎn)做到穩(wěn)定再考慮面。這樣的話你會(huì)少走特別多的彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美一区二区三区黄色影视| 人人妻人人爽一区二区三区| 久久久久久久国产视频| 啊啊啊好多水| 久久久久久人体| 刺激精品视频| 2025亚洲男人天堂| 五月婷婷色色| 丰满人妻一区二区三区在线| 国产免费一区二区在线A片视频| 人妻色偷色噜| 久久岛国| 五月天婷婷社区| 亚洲成人妻日韩在线| 亚洲综合网电影91| 久久久久13| 欧美精品999| 秋霞曰韩R级| 91精品微拍福利| 91亚州| 中文三一区| 亚欧美色图| 色综合超碰超| 亚洲AV在线资源| 婷婷香网站| 天天碰操中国年青熟妇| 日韩精品人妻系列无码天堂| 97超碰热线| 国产久久日韩网站导航| 色女99一级片在线观看| 1204av韩国| 夜夜狠狠躁日日躁色视频| 大奶啊啊好爽 | 3571色综合一区二区二区| 成人免费福利网站国产| 中文一区在线视频| 无码在线亚洲| 97人人中文网| 91热情品| 欧美另类丝袜熟女| 亚洲av成人精品一区| 日本不卡一二区| 99久草| 中国一级特黄大片护士| 中文字幕精品一区二| 国产亚洲99久久精品熟| 欧美人人曰人人操人人射射| 看一级黄色视频| 亚洲精品日韩国产欧美| 婷婷色一区| 冬京热男人的天堂| 久久99草| 欧美91网| 91人妻人人澡人人爽人人精品| 伊人五月天婷婷| 777AV电影| aaaa少妇高潮大片| 麻豆天美电影一区二区| 中字一区| 蜜臀久久99精品久久久久久无删减 | 性色高清在线| 午夜精品久久999热蜜桃介男人用| 肉丝无码中文高清| 诱惑网综合| 欧美v亚洲v综合v国产v妖精| 留下AⅤ黄色片| 在线A日本| 激情综合五月婷婷| 久久久111| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 91天天看| 91天堂色男人的天堂| 九九综合久久| 欧美青青视频| 国产后入| 去干网最新版| 偷拍在线观看视频| 操东北女人| 黑人白女精品一区| 中日韩久久人妻一区二区| 天天大干大香蕉| 91麻豆天美| 啪啪免费| 亚洲精品国产av天美传媒| 日本熟妇人妻一区二区三区| 岛国网址国产 | 久久久久久加勒比| 亚洲最新中文字幕免费| 日韩 人妻 精品| 91N综合网在线| 13小男生GAY自慰脱裤子| 性在久久久久久| 看看小穴| 熟妇女伦乱视频| 亚洲天堂AV在线播放| 九九成人| 青青操在线视频| 操操吧亚洲乱伦视频| 青青草视频这里只有精品| 91综合天天看| 福利色色| 久久久久国产精品人妻aⅴ天堂| 亚洲AV成人精品网站在AV| 99久久99九九99九九九| 天天综合网视频91| 日本午夜久久电影| 九九热只有精品| 成人三一级一片aaa| 91 丝袜在线| 国产成人超碰在线| 啊啊啊啊在线观看网址| 女人被男人桶爽视频网站| 91网亚洲| 欧美日韩黄片精品在线| 蜜臀久久99精品| 国产高清自拍视频| 九九免费影片| 亚洲操逼视频网站| 91情色在线| 好湿好紧好爽 视频| 另类天堂| 国产乱人妻精品入口| 亚洲AV成人精品网站在AV| 四虎影库国产精品免费| 国产精品96| 97精品国产97久久久久久户外免费| 成人三级片一区二区三区视频| 六十路日本| 中国91AV| 无码91| 国产无码三级视频在线观看| 九一精品牛牛一区二区| 人人操人人操草草| 好爽视频在线观看| 97精品久久久久久久| 免费观看性欧美一级| 亚洲色图 欧美| 人妻天天爽夜夜爽爽| 91香蕉国产尤物视频| 天天干美少妇一区| 69XX一中文字幕人妻91| 国产在线精品电影观看| 久久久久九九九| 蜜臀99久久精品| 荡小穴在线观看| 一区不卡在线观看av| 色大香蕉97N| 亚洲欧美日韩夜夜| 精品无码一区二区三区色欲| 91真人天天在线| 中文字幕精品日韩中文字幕| 亚洲色图欧美色图在线播放| www. 男人天堂成人在线| 日本高清一区二区在线| 日韩三A大片在线观看| 欧美激色| 青娱乐亚洲热| 综合久久婷婷| 人妻系列无码专区中文有码 | 麻豆国产免费影片| 日韩欧美性吧婷婷乱伦大香蕉| 色情亚洲日本成人| 日日操天天操| 人妻人人做人人澡人人爽欧美一区| 91亚洲最新在线| 好看的91视频| 色综合天天| 久草视频观看视频在线| 青草精品视频日本久久久久网站在线| 97丝袜亚洲在线播放| 人妻人人操| 国产精品盗摄 偷窥盗摄| 91n免费处女| 日本精品一区三区| 国产精品亚洲一区二区三区四区| 国产精品99精品视频网站| 色噜噜人妻av中文字幕| 亚熟hd视频在线| 久久欧美按摩999| 在线无码操| 一级做a爰片性色毛片久久| 色九九久九九| 91熟女视频网| 97视频www| 九色 人妻 大香蕉| 五月婷婷综合网| 风流老熟女一区二区三区l| 91五十路| 狠狠爱夜夜| 欧美日韩中国x| 一区麻豆 高清中文字幕| 欧洲色色| 五月丁香影视| 99热97| 激情五月天丁香| 操一区| 国产三级电影免费观看| 欧美日韩国产中文精品字幕自在自线 | 乱伦av麻豆| 思思热在线视频免费| 最新AV在线| 91美女视频直播| 亚洲。天堂。日本在线观看| 日韩精品三级片长长久久| 青青草黑寡妇男人天堂| 色月天AV导航| 日本久久999| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 欧洲精品欧洲精品| 天天操熟妇| 欧美手机在线综合| 91天堂丝袜美腿| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 国产精品一区二区亚洲人成毛片| 欧美真人抽搐一进一出gif | 极品少妇久久久久| 人妻夜爽夜夜爽| chaopen97久久| 久久国产精品视频| 一区二区三| 国产无码久久高清| 在线看的av| 又大又长又粗又爽又黄| 久久香蕉国产线看观看猫咪av| 热99这里只有精品| www99热| 中文字幕一区 二 区 三 四 五 区日 日 骚| 激激五月| 中文字幕女同在线| 97视频一区| 国产中出内射一区二区| 欧美性爱无码一区二区三区| 91碰碰碰| 九九九久久久久| 九一性生活免费视频| 日韩欧美中文字亚洲慕| 久久人妻熟女一区二区| 亚洲黄色a级片| 亚洲天堂热| 日本天天人人狠狠在线日美女| 欧美在线伊人色| 亚洲男人的天堂网| 花花AV导航| 伊人黄色片| 黄色欧美性爱视频| 白丝AV网站| 久久精品国产97欧美精品亚洲 | 夜夜影视四色| 又大又长又爽| 91欧美www| 韩国免费播放一级毛片| 精品性爱一二三区| 婷婷15月天青娱乐| 91久久青青草原精品| 91精品女厕偷拍视频| 丁香色色网| 男人天堂久久日韩| 综合五月天| 秋霞网—男女啪啪亚洲免费体验区| 欧美久久伊人| 97久久精品国产| 精品女同一区二区三区| 入口操逼网站| 久久超碰98| 97精品久久| 天天精品| 青青操视频在线| 99精品国产户外露出| 综合一区中亚洲国产成人综合精品| 夜夜爽妓女| 久肏视频字幕| 亚洲日韩精品在线播放| 新视频sss国产| 大香蕉淫人网| 亚洲国男人的天堂| 久一区久久蜜桃| 九九aV| 裸体1区| 日韩在线国产字幕| 大胆91| 蜜桃香蕉久草精品在线| 三级三级三级a级全黄三| 97超碰超| 激情综合五月天| 四虎884| 自拍偷拍 日韩无码| 欧美日韩一干二干| 视频黄色国产一级| 亚洲风情综合网| 在线视频免费播放一区| 日韩久草| 啊嗯好大视频在线观看| 啪啪综合网| 色婷婷久久| 乱伦图av| 九九九九一级| 精品久久久久久中文| 久久综合女优| 99色热国产视频精品| 日韩av色图综合| 黄色片A级一区二区三区| 91麻豆天美国产欧美| 日韩大香蕉AV影片| 麻豆国产尤物AV| 女人天堂av在线播放| 五月婷婷深深爱| 超碰九7| 91丝袜美女| 久久久精品中文字幕爱豆| 中文有码第五页| 麻豆国产精品午夜视频| 欧美视频激情久久久久久| 亚洲人成在线放东京热| 久久精品一区二区三区不卡| 成全动漫视频观看免费下载| 国产熟女精品区| 色乱二区| 亚洲综合首页| 性性欧美| 爱我干综合| 婷婷久久五月综合激情| 最新精品久久蜜桃| 凸凹视频在线观看| 日韩免费簧片| 日韩高清一二三| 国产玖玖| 淫荡熟女乱伦网| 男人的天堂视频精品乱在线| 国产一级久久久| 成人a大片在线观看| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 强奸乱亚洲| 99re免费| 久久亚洲一区二区色婷婷| 老色69| 一起草日韩| 亚洲天堂2020| 成人在线永久| 亚洲国产欧美日韩人妻日中文| 亚洲国产欧美一区二区潘金莲| 精品久操| 日韩99神马视频片| 六月天婷婷| 超碰无码加勒比| 久久久久人妻二区精品叶可怜| 婷婷激情五月综合| 成人一区二区三区四区| 夜夜一区二区| 亚洲日韩成人性爱视频| 亚洲国产精品V?在线播放| 国产超碰欧美| 欧美999999| 欧美另类色图片| 婷婷午夜成人色中色| 日本韩高清无砖码22o| 2019亚洲男人天堂| 久久视频少妇美女| 99www.bibizy香蕉资源国产一区二区三区高清 | 午夜男人一级A片7777| 婷婷在线视频在线观看| 91老熟妇| 超碰色97| 亚洲色图日韩丝袜制服一区二区五月在线| 亚洲综合九| 亚洲天堂另类美腿| 欧美拳交在线播放| 日韩欧美视频青青| 丁香五月婷婷色| 白嫩国模丰满一二三区| 精品亚洲国产成人精品| 久草视频观看视频在线| www.91人妻.com| 欧美18老人禁| 亚洲色图尤物视频| 久久久久久久伊人精品| 欧美日韩午夜精品一区二区三区 | 99热综合在线| 久久超碰亚洲人| 91neishe| 五月天黄色av| 看黑丝美女操逼青青网站| 日韩女优在线| 激情图片伦理国产一区二区日韩| 91AV老熟女视频| 啊啊啊啊嗯嗯嗯用力好爽| 天美麻花大全视频| 五月激情在线| 久久久久9久久久久| 日本天天吊| 一区二区三区日韩欧美 | 天天综合91入口| 97久操| 狠狠爱夜夜| 欧成人精品H无码| 老妇女91| 99在线免费公开视频| 日韩中文字幕人妻视频| 黄色av一区二区在线| 日韩中文字幕二区| 国产视频一区二区在线观看| 伊人国产视频| 亚洲春色欧美| 小说区 图片区色 综合区| 日本操逼aaaaa| 在线看片国产精品每日更新| 超碰99在线观看| 九九热免费在线国产视频伊人五月| av大香蕉网站| 中文字幕二区| 蜜乳av首页| 激激五月| 超碰这里有精品| 久久区| xxxx网站亚洲精品| 伊人激情| 亚州色图欧美| 久久午夜神马| 亚洲国产ⅴ高清在线观看| 91在线精品| 人妻久热在线| 97天天插| 欧美成年人性爱视频免费观看| 国产精品久久99日日| 色墦五月丁香| 欧美日韩国产人人| 欧美成人一级麻豆| 中文字幕av亚洲在线| 97在线免费看| 欧美少妇高潮| 26uuu性物| 久久亚洲骚逼综合| 亚洲在线A| A级毛片在线看免费| 色欲天天综合网| 亚洲精品国产av天美传媒| 精品对白久久不卡| 8050午夜少妇无码| 色 亚洲 91| 久9无限国产| 日本欧美亚洲高清在线看| 黄色二级片网站| 久久精品噜噜噜成人看免欧美大片| 欧美十八禁视频| 激情五月天婷婷| 色麻豆AV| 91丨九色丨国产丨人妻在线 | 精品v1区| 锕锕好爽 死我在线观看| 三级精品三级在线观看| 一区黄二区黄| 午夜精品久久久久久久99| 日本黄大片在线观看视频| www.色婷婷.com| 四季av一区二区凹凸精品小说| 日韩操p| 日韩熟女精品无码专区一区二区| 久久久久久加勒比| 高清无码网址| 久久人| 五月丁香婷婷啪啪| 九七超碰人人乐| 韩国一级婬片A片AAAAA| 农村少妇久久久久久久| 中文字幕在线高清男人的天堂| 加勒比伊人综合| 久久精品国产亚洲AV无码做| 97视频www| 亚洲综合另类小说色区亚洲成av人片在www| 91亚·色| 100啪啪视频大全| 亚洲欧美性生活| 人妻偷拍一区二区三区| 最新av在线| 日韩无码黄色片| 大香蕉之青青草原| 激情专区综合| 五十路熟女人妻一区二区在线观看 | 二级久久网| 国产一区免费午夜视频| 亚洲色图 图片| 18精品一区| 亚洲精品久久久久毛片A片拉屎 | 亚洲深夜福利| 天堂蜜桃无码视频一区二区| 97在线免费观看视频| 操狠狠| 最新无码国产| 伦在线97| 99在线观看| 91色综合| 亚洲视频二区 | 青青草国产盗摄一二三区| 超碰成人公开| 欧美日韩制服| 69视频福利导航| 国产精品一区二区 尿失禁| av2014 日韩在线中文字幕| 丁香五月激情网| 另类TS人妖一区二区三区| 神马九九九| 操九九九九九九| 免费超碰97在线观看| 国产97综合| 久久国色天香香蕉| 亚洲天堂7777| yaouchengrenav| 乱色老一区二区三区的观看方式 | 精品二区三四区五电影 | 成人女人国产| 亚洲操操| 美国一区二区三区视频| 999精品女人| 做爱福利视频一区二区| 99热综合| 久久成人国产| 国产成人亚洲精品无| 亚洲宗合网| 亚洲免费精品一区| 久久五月丁香| 欧美少妇性爱网站| WWW.操逼.COM| 久热这里只有精品9| 日韩精品9999| 精彩视频日韩| 亚洲色天堂日韩中| 午夜男女爽爽爽在线视频| 日韩操p| 亚洲欧洲激情卡通另类文学四射小说网站 | 欧美天天综| 日本天天操| 日本视频在线观看污污污| 综合久久少妇中文字幕| 欧美日韩小说| 天天色综合影视网| 少好三P| 精品国产国产AV| 日本九九久久99播| 久久侵犯人妻爽爽爽| 欧美成va视频网站| 操逼逼无码| www.大香| 无码日韩人妻av一| 丝袜内射| 九九视品黄色| 精品v1区| 欧美少妇第一页| 女人妻一区| 一区二区久久天天干狠狠| 婷婷久久综合| 亚洲天堂人妻一区二区| 2020中文字幕| 日韩99神马视频播放片在线播放| 美女刺激久久国产欧美| 丁香九月婷婷| 另类图片五月| 97精品国产97久久久久久户外免费| 男人的天堂2010| 九九热在线精品视频| 久久98| 五月丁香网站| 中文字幕91综合| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 97网址97| 青青草导航在线视频| 人人九九精| av2014 日韩在线中文字幕| 骚货操死你| 欧美姓爱综合网| 欧美超碰97| 自拍偷拍第26| 日本国产高清色www视频在线| 欧美强奸乱| 欧美成人性爱视频大全| 一本道综合色图| 九久9热| 久久久久亚洲一区女同性恋中文字幕| 精吧天堂| 五十路一区无码| 国模无码人体一区二区三| 亚洲国产婷婷在线播放| 婷婷91| 青娱乐 成人娱乐在线| 91国产丝袜足交精品视频| 国产91精品久久久久久久网曝门| 天天操天天日天天干| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 国产强奸乱伦第1页| 内射夫妻三片| 色综合网1| 日韩97超碰中文字幕| 欧美精品91| 神马久久免费电影观看| 成人性爱免费播放| 中文字幕亚韩| 久久人妻四季| 97资源站国产精品| 亚洲国产精品99久久久| 日韩操人| 国产白丝在线| 啊啊啊网站| 操逼视频亚洲| 91欧美偷拍| 欧美亚洲在线| 国产一区二区a毛片| 最新欧洲欧美日本激情网站| 99精品久久久久久| 人妻色偷色噜| 九九热精品在线| 大香蕉琪琪日本女优不卡| 欧美色图第一页| 国产精品自在线发布| 色综合中文字幕不卡| 亚洲天堂久| WWW啪啪的com| 久久理论字幕视频| 中文有码9| 亚洲少妇综合在线播放| 欧美色997| 久久精品黄色| 丁香五月天社区| 中文字幕欧美日本乱码一线二线| 国产又黄又爽又刺激久久久久久| 久久天天摸| 亚洲男人天堂网站| www…国产操逼| 熟女AV一区| 国产丝袜视频| 欧美亚洲清纯| 亚洲αv一区二区三区| 久久久久久91香蕉国产| 试看日韩黄片| 精品久久久九九九孕妇| 欧美日韩久久精品爱爱| 99久在线精品99re8热| 国产外初女出血视频| 亚洲欧美综合区自拍另类| 国产嫩草精品A88AV在线| 麻豆精品一区二区三区四区免费观看| 国产 码在线成人网站| 我爱操| 中字乱伦AV| 中文字幕一区二区三区四五区| 国产家庭乱伦网址| 青操影院| 国产精品成人无码av| 亚洲人精品久久久| 综合激情婷婷| 天天日天天看| 青青青操| 亚洲精品乱码线路中文字幕| 中国黑人三级片网站上区| 欧美特大AA级黄片| 久热久| 亚洲毛片一级带毛片基地| 熟妇高潮精品一区二区三区下载| 51一区二区三区| 欧美性五月| 国产67194| 午夜精品久久99蜜桃的功能章节| 少妇高潮99p| 国产婷婷综合在线观看| 美女主播色欲91抠b在线播放| 国产精品永久免费10000| 国产精品久久久九九九| 黄色视频特级毛片| 日日摸日日碰夜夜爽视频| 国产农村妇女一区二区| 超碰在线欧美性爱激情| 日韩一级二级三级免费看完整版国语版| 午夜福利在线合集| 怡红院成人视频| 久九九九九九九热| 人人插人人摸人人| 奶水 人妻 哺乳 在线| a男人的天堂| 93人人操人人| 97在线免费看视频| 欧美一二在线| 国产无马av| 一级片视频啪啪| 职场同事知名国产国产精品久久欧美日韩| www超碰| 国产成人拍国产亚洲精品| 日本孕妇孕交| 欧美久久草熟女| 亚洲第2页| 777超碰| 国产精品久久久久久久久久久久久久久久| 国产精品青草综合久久| 无码操逼视频一下| 性高潮久久久久久久久久久| 日韩紧密久久| 99超级碰免费视频| 亚洲 欧美 制服 另类 自拍| 97这里有精品| 劲爆欧美人妖三区91| 花野真衣| 亚洲中文字幕精品久久久久久直播| 久久综合九色综合欧洲98| 亚洲涩图欧美| 乱码熟妇人妻久久久| www.天天干| 午夜久久无码1000合集| 强奸乱伦AV一天堂网| 99久久99九九99九九九| 96久久久精品| 欧美激情超碰777| 看日韩美女二区三区免费操逼视频 | 亚洲精品 大香蕉| 久久精品店| 人妻嗯啊啊在线播放| 超碰国产精品久| 人人操人人色网| 日韩99999| 97欧美色| 中文字幕免费看| 日日夜夜草草草| 啊啊啊啊啊操我视频| 丁香六月综合激情| www欧美性爱| 国产亚洲中文不卡二区| 蜜乳视频网站| aaa亚无码专区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产成人手机视频激情| 人人操人人爽人人操人人| 亚洲a色| 久啪视频| 97精品一区二区视频在线观看| 曰韩少妇无码| 伊人亚洲综合| 青青草啪啪网| 韩国女主播青草在线| 亚洲伊人久久精品狠狠在线| 98一区二区精品| 玖玖综合.com| 97爱免费插| 婷婷香蕉欧美在线一区二区三区 | 精品亚洲天堂| 亚洲 欧美 色图| 午夜爽爽爽| 夜夜嗨视频| 97亚洲中文| 爱丝福利| 丝袜色综合| 亚洲影视高清第一页| 欧美亚洲清纯| 亚洲Av噜噜一区二区三区妖精| 东京太热久久久| 亚洲第一页色| 亚洲色图欧美色图制服丝袜| 丝袜无码a片| 少妇色综合| 狠狠色一区二区中文字幕| 九九九九九精品十六| 黄色一区三区| 亚洲欧美洲综合| 曰韩人妻中文字幕在线| 国产无码精品高清| 特级丰满少妇一级AAAA爱毛片| 国产伦乱91| 中文字幕一区 二区三四五 区日 日骚 | 亚洲精品1区| 91老熟女91老女人| 精品免费成人久久| 国产福利合集| AV网站高清无码在线观看| 无码 黑人一区二区三区| 99精品视频在线观看免费| 爽 好舒服 无码刺激久久| 色婷婷激情| 97色爱| 经典丝袜一区| 欧美综合另类| 777AV电影| 99久久婷婷国产综合| 欧美美女自慰一区二区三区| 91夜夜蜜桃臀1区2区3区| 97热视频在线观看| 亚洲欧美色图小说| 九九九九97| 国产又粗又长视频| 国产在线观看一区二区三区| 国产网红精品| 精品久久久久,69国产成人精| 九九英色视频| 久久国产精品一区二区| www.99色| 五月香婷婷| 欧美72网页| av影院十区| 成人a级高清视频在线观看| 97久久久| 内射黑丝袜| 久久婷五月| 久久人爽| 亚洲精品自拍| 天天综合精品| 嫩草91| se吧提供91精品国产91久久久久久| 91在线无码精品秘 软件| 97硬碰| 欧美综合亚洲综合| 亚洲女毛多水多21P| 东京热一区二区三区四区五区六区| 欧美97av| 亚洲精品aa久久伊人| 超碰1024久久| 天天综合网91| 五月丁香成人网| 亚洲熟女少妇免费视频| 国产黄色影片在线观看| 97二区四区| 久久久久99999| 99热伊人| 日韩欧美中文字幕搭讪巨乳美人妻视频| 人人操人人插人www| 亚洲一区二区三区麻豆传媒| 亚洲超碰97| 日韩三级视频一区二区三区| av天堂加勒比| 女人高潮大叫一级毛片| 久久人妻一区二区三区高清| 淫荡熟女乱伦网| 区二区亚洲婷| 女人被男人桶爽视频网站| 99www.bibizy香蕉资源国产一区二区三区高清 | 91色婷婷综合久久中文字幕二区| 龙兴卡官方查询| 国产精品亚洲一级av第二区| 日本不卡二三区| 五十路六十路素人熟女| 爱欲AV| 久久透逼视频| 久久精品老司| 丁香九月 婷婷| 国内操逼视频二区| 变态乱伦伪娘灌肠一区二区| 亚洲激情色片| 中文字幕91页| 2019亚洲男人天堂| 日韩av在线播放不卡| 欧洲站一级二级三级h| 日韩AV无码中文一区二区| 九九九热精品| 最新国产精品久久精品| 亚洲玖玖爱| 亚洲 综合 欧美| 人妻精品视频一区二区三区| 亚洲成人精品久久久| 色就色综合| 久久精品日韩专区免费观看| 亚洲激情在线一区二区| 亚洲精品电影| 国产欧美一区二区| 天天色黄色影院天天操| 午夜综合在线| 亚洲综合五月天| 日韩成人高清一区二区| 国产人妻一区二区三区欧美毛片| 国产亚州高清国产拍精| 色吊丝 日日骚 清纯唯美| 混色激情av| 狼狼色丁香久久婷婷综合五月| 天天天操天天天爱| 一二三区在线| 国产一级137片内射麻豆| 国产熟女高潮一区二区三区| 熟女性视频| 国产探花日韩援交| 亚洲天堂久| 亚洲伊人久久精品狠狠在线| 日韩国产在线观看av| 91制服丝袜| 青青操少妇| 久久亚洲婷婷| 一级成人性爱| 国产9l 大屁股| 老汉网| 五月天综合网| 久久久久久69国产一区二区| 国产日韩美女小穴视频网站不卡| 四虎永久在线精品免费网址| 亞洲久久直播| 国产粉嫩蜜臀av一区二区三区 | 手机在线视频国内精品| 美女黄站| 啊啊啊啊在线播放| 日本一区99| 日本福利社| 乱论91| 亚洲一区日韩精品中文字幕| 精品人妻视频一区二区在线播放 | 插入逼91| 亚洲丝袜在线观看| 人妻丝袜肏逼| 成人网欧美风情| 九九色色| 日韩中文字幕在线视频观看| 久久久久久久九九九九九九| 亚洲se91| av天堂加勒比| 亚洲天堂资源| 中文字幕人妻色偷偷久久皮 | 超碰社区97| 97精品国产精品免费观看| 精品国产自在在线99| 五月天激情影院| 嫩草影院在线观看精品| 无码精品久久| 欧美天天| 亚洲天堂男人天堂网| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 2019天天干天天操| 日本一区二区三区午夜观看| 久操电影| 亚洲爽图| 国产美女高潮| 偷拍 亚洲 欧美| sewuyueav| 日日夜夜骑| 男人的天堂久久| 黄页网站成人免费| 91九色丰满高潮| 九九免费影片| 国产自啪精品视频网站黑丝| 色臀aV| 日韩av情韩国爱禁区av一区二区| 97精品国产精品免费观看| 久久综合女优| 国产十八禁视频| 77国产精品| 欧美男人亚洲天堂| 亚洲综合一| 久久久精品视频欧州站| 97久久国产亚洲精品超碰热| 久久久精| 午夜福利 成人 91| 精品少妇99| 国产精品自拍视频 | 97视频620| 中文字幕十五区| 91AV天堂| 夜色97| 91痴汉| 99999国产精品| 97超碰人人操人人操| 黄色免费一级在线毛片| 黄色香蕉视频网站一区| 久久精品国产亚洲AV高清演员表| 中文字幕一二区二三区人妻专区| 国产无马视频| 美女自卫慰黄网站免费| 九九99精品| 久久国产三区| 97视频在线观看高清资源| 热热色色综合| 99精品无码| 老熟女网站| 日韩激情毛片一级久久久| 国产不卡免费在线视频| 免费a在线播放v| 丝袜美腿欧美| 国产白领连续中出在线播放| 亚洲91大片| 九九热精品视频六| 国产一国产一级毛片古装| 69少妇一区二区| 亚洲熟女中文字幕在线| 天天爱天天韩国日本牛牛牛牛 | 看大黄色大片原件| 久久香蕉国产线看观看猫咪av| 五月丁香六月婷| 干b在线性社区| 亚洲97网站| 夜夜嗨视频| 亚洲最大成人a毛毛片| 一块操欧美| 99re69综合| 精品丰满熟妇人妻一区| 最新亚洲黄色免费电影| 欧美性爱视频免费一区一A| 丰满欧美少妇| 狠狠干妹子| 亚洲中文字幕精品一区| 久久久久亚洲Aⅴ无码| 五月婷婷综合网| 裸体1区| 九九九九九九视频免费| 美女写真| xxx亚洲午夜天堂| 桑老女人九区| 琪琪精品免费一区二区三区| 久久九九99| 激情五月天校园春色网| av天堂电影网| 久久国内| 青青草大香蕉在线视频| 亚洲天堂加勒比| 国产极品美女高潮无套在线观看 | 日韩偷拍一区二区三区 | 中文字幕一区二区三区50路| 久久九九视频九九视频| 91在线美女| 中文字幕一区二区三区人妻不卡 | 亚州五月| 精品久久久久久中文| 刺激性视频黄页| 偷拍视频青青草在线视频| 操逼操逼逼操操逼91| 天天摸夜夜摸| 精品午夜福利| 日韩999| 欧美综合色综合| 日韩性爱1级片视频| 蜜臀在线免费观看在线免费观看| 少妇精品| 巨爆乳肉感一区二区三区竹菊影视 | 性综合网| 嗯啊不要啊在线 | 99精品在线| 天天碰久久入| 欧美性爱伊人| 天操天操夜操夜月操月年年操操| 国产欧美日韩一区二区三区| 亚洲精品天天影视综合网| 日韩欧美性爱电影在线观看| 97人妻碰碰中文无码久热丝袜| 色777999综合| WWW黄片COM| 国产日韩在线播放av| 99999精品视频| 熟妇综合一区二区三区| 美女啊啊啊啊啊啊啊| 欧美色另类| 色噜噜综合在线| 欧美宗合色| 天天综合网~69| 久久久亚洲| 中文字幕91综合| 91香蕉国产尤物视频| 按摩中文字幕| 91露脸熟女专区| 性老妇一区二区三区| 亚洲av综合色区图片亚洲| 先锋音影AV| 国产AV无码AV| 国产91丝袜 在线播放| 婷婷激情四射| 91啪啪| 日日黄色三级网站| 操逼1区| 人妻第一页| 好湿好紧好爽 视频| 国产精品探花色| 免费97视频| 丝袜大香蕉| 一中国女人毛片水真多| 欧美aⅴ99久久黑人专区| 久操网线| 色九久| 国产精品乱码久久久久久久久久久久| 免费观看网黄| 色香综合天天影视综合| 婷婷伊人| 豆花视频操逼网址| 超碰这里有精品| 婷婷六月天| 2017人人操,人人摸| 天天日熟妇| 欧美.亚洲.另类.丝袜.制服.诱惑| 岛国免费视频在线| 日本黄色XXX| 91人妻超碰| 国产91乱伦| 人妻丝袜日本| 韩国女主播青草在线| 亚洲精品精品一区二区| 中文字幕欧美丝袜07资源| 欧美亚洲涩涩| 视频二区美腿丝袜制服人妻欧美| 精品人妻1区| 欧美欧美少妇| 丝袜av一区二区三区| 五月婷婷六月色| 日本黄色大片一级视频免费麻豆| 欧美97av| 大香蕉男人的天堂| 超碰av在线| 国产一在线观看| 特色a在线上| 久久久免费懂色| 美腿色图| 色狠狠综合| 亚洲一区二区三区中文字幕| 日骚逼视频| 精品综合久久久久久97| 97玖玖人妻| 狠狠操狠狠爱| 青青久久手机线视频| 最新亚洲黄色免费电影| 大色网久久| 操一区| 91 丝袜在线| 99热亚洲| av天堂5| 日本无码1| 内射小黄片| 亚洲美女av无码| 超碰人人干天天射| 美女丝袜激情小说| 青青草视频久久久久| 免费看毛片操穴| 国产精品秘 福利姬在线观看| 国产一级高跟丝袜| 91精品无码久久久久久久| 青青青青青手机视频| 高清不卡 中文 人妻| 国产熟妇一区二区| 中文字幕 一区二区 亚洲无码| 九月婷婷综合| 在线国产一区二区av| 91在线视频观看国产| 麻豆国产视频精品观看| 色婷婷国产精品一区在线观看| 久久久偷拍| 精品无码少妇| 91久久国产精品| 99热在线只有精品| 啊啊啊啊,啊啊好多水| 亚洲日本天堂| 素颜老阿姨乱情色| 97精品综合久久网| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 在线综合 亚洲 欧美中文字幕 | 欧美性爱日韩高清| 久久久新亚洲AV| 色牛aV| a级免费在线观看| 大JI巴好深好爽又大又粗视频| 女人久久久| 国产成人亚洲精品无| 免费精品无码一级毛片牛牛影视| 九热中文字幕| 国产精品999aaa| 亚洲精品国产精品成人| 久久在线观看免费视频| 999久久久免费精品国产牛牛| 黄色无码高清黄色无码网站| 亚欧无码线免费观看视频| 国内偷拍精品一区二区| 综合在线导航一区| 在线女人91| 久热久一区二区三区| 久久免费老司机精品| 丰满少妇一区二区三区四区观看| 日韩欧美麻豆大片| 91色综合激情| 青青欧洲黑| 五月天九九日国产精品一区二区三区|