亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

本地AI智能體多模型協(xié)調(diào)與批量任務(wù)流水線實戰(zhàn)

本地AI智能體多模型協(xié)調(diào)與批量任務(wù)流水線實戰(zhàn) 本地 AI 智能體這個事我前后折騰了大半年從最開始拿一臺舊筆記本硬跑 7B 模型到后來在一臺單卡機器上把一整套多模型協(xié)作的批量任務(wù)流水線跑通中間踩的坑比寫過的代碼還多。LM Studio 這類工具把本地加載模型這件事的門檻壓得很低點幾下就能對話但真要把本地 AI 智能體當(dāng)成生產(chǎn)工具用起來尤其是多模型協(xié)調(diào)加批量任務(wù)這種組合光會點界面是不夠的。你要面對的是顯存怎么分、模型怎么換、上下文怎么截、并發(fā)開多少、失敗了怎么續(xù)——這些問題沒有一個能在圖形界面里找到答案。這篇內(nèi)容適合兩類人一類是已經(jīng)在本地跑過單模型對話想往智能體方向再走一步的另一類是手里有一批重復(fù)性文本任務(wù)想用本地模型批量處理、又不想把數(shù)據(jù)往外送的。我會把 LM Studio 當(dāng)成一個模型服務(wù)器來看待圍繞多模型協(xié)調(diào)和批量任務(wù)這兩條主線把選型邏輯、接口細(xì)節(jié)、流水線設(shè)計、以及那些只有真跑起來才會暴露的問題一條條攤開講。代碼用 Python接口走 OpenAI 兼容格式你可以直接抄去改。1. 先把賬算清楚本地智能體的顯存預(yù)算與延遲底線動手之前我最想勸的一件事是先別急著寫代碼先拿張紙把賬算清楚。本地智能體和云端 API 最大的區(qū)別不在模型智商而在資源是你自己的。你的顯存是固定的你的顯卡是獨占的模型加載一次要幾十秒這些東西一旦進入設(shè)計整個架構(gòu)的思路都會跟調(diào)云端接口完全不一樣。1.1 云端接口和本地推理的真實差距在哪調(diào)云端接口的時候我們習(xí)慣了一種很奢侈的用法一個請求里塞上萬把字的歷史反正按 token 計費貴是貴點但不會失敗。本地推理完全不是這個邏輯。上下文長度是硬約束超了就是超了有的實現(xiàn)會靜默截斷前半段有的直接報錯最坑的是截斷之后模型還能正常輸出只是它忘了你在開頭定的規(guī)則。另一層差距是并發(fā)。云端接口你開 20 個線程同時打服務(wù)端自己扛本地單機單卡模型實例就是一個進程占著一塊顯存兩個請求同時進來要么排隊要么把 KV cache 撐爆。我最早那版腳本就是照著云端習(xí)慣寫的ThreadPoolExecutor(max_workers8)跑第一條正常跑到第三條開始報顯存不足日志里全是超時。所以本地智能體的第一條設(shè)計原則是把資源當(dāng)成一等公民寫進架構(gòu)里而不是當(dāng)作部署細(xì)節(jié)丟到最后再調(diào)。維度云端 API 習(xí)慣本地推理現(xiàn)實上下文盡量塞滿越長越好按需裁剪寧短勿長并發(fā)多線程直接打串行或極低并發(fā)靠實例數(shù)堆延遲相對穩(wěn)定百毫秒級首字首字幾百毫秒到數(shù)秒受加載狀態(tài)影響失敗率低偶發(fā)限流顯存、上下文、格式都可能觸發(fā)失敗成本模型按 token 付錢一次性硬件投入 電費 你的時間這張表我建議貼在顯示器邊上。后面所有的設(shè)計取舍基本都能從這張表推出來。1.2 用參數(shù)規(guī)模反推你的顯存下限很多人問我這卡能跑多大模型這個問題沒法一句話回答因為量化等級、上下文長度、是否多模型常駐三個變量一動答案就變了。我給一個粗略的估算思路你自己往里代。模型權(quán)重的顯存占用約等于參數(shù)量 × 每參數(shù)字節(jié)數(shù)。FP16 是 2 字節(jié)8bit 量化約 1 字節(jié)4bit 量化約 0.5 到 0.6 字節(jié)實際略高于理論值因為有些層不量化。所以一個 7B 模型 4bit 量化權(quán)重占 3.5 到 4GB 左右14B 大約 8GB32B 大約 18 到 20GB。然后是 KV cache這部分經(jīng)常被忽略。它的占用跟上下文長度、層數(shù)、隱藏維度成正比粗算可以用每 1000 token 占用幾百 MB這個量級去估具體數(shù)值隨模型差異很大同一個模型在 8K 和 32K 上下文下KV cache 能差出好幾 GB。再加上運行時的一些固定開銷大概留 1 到 2GB 余量。舉一個我實際配過的例子單卡 24GB目標(biāo)是跑一個 14B 級別的規(guī)劃模型加一個 7B 級別的執(zhí)行模型同時常駐。14B 4bit 權(quán)重約 8GB配 8K 上下文KV cache 加開銷算 3GB合計 11GB7B 4bit 約 4GB配 4K 上下文算 1.5GB合計 5.5GB。兩者相加 16.5GB卡上還剩 7GB 多看起來寬裕但實際上系統(tǒng)和其他進程還要吃一部分所以我最后把 7B 那一路的上下文壓到了 4K 以內(nèi)把并發(fā)鎖死在 1。這個配置跑起來很穩(wěn)連續(xù)跑了三千多條任務(wù)沒出過 OOM。1.3 延遲不能只看 token/s新手看模型性能喜歡看每秒多少 token這個指標(biāo)有用但不完整。真正影響批量任務(wù)總耗時的是單條任務(wù)的平均端到端耗時它由三部分組成首 token 延遲、生成耗時、以及被很多人忽略的模型切換或加載耗時。首 token 延遲跟你喂進去的上下文長度強相關(guān)。同一個模型200 token 的 prompt 首字可能 0.3 秒就出來了8000 token 的 prompt 可能要等兩三秒——因為要把整個上下文過一遍前向。生成耗時才是 token/s 說了算的部分。而模型切換如果你的流程里要在規(guī)劃模型和執(zhí)行模型之間來回跳而顯存又不夠兩個同時常駐那每次切換都要重新加載一次十幾秒到一分鐘不等批量任務(wù)里這個開銷會被放大到無法接受。這就引出了后面章節(jié)的一個核心決策要么讓所有參與協(xié)作的模型同時常駐要么把流程改造成分階段批處理讓同一個模型在一段時間內(nèi)只干一件事。這兩條路各有代價但都比一條任務(wù)內(nèi)來回切模型要好得多。提示算顯存的時候不要按理論最大值去卡留 20% 左右余量。本地推理的顯存占用不是恒定的長 prompt 進來會臨時沖高卡得太死就會出現(xiàn)平時都好好的偶爾崩一次這種最難查的故障。2. 把 LM Studio 變成一臺模型服務(wù)器圖形界面是用來試模型效果的真正做智能體開發(fā)你得把它當(dāng)服務(wù)用。LM Studio 提供了本地服務(wù)能力會起一個 HTTP 服務(wù)對外暴露一套和主流接口格式兼容的端點。這一步做好了后面換模型、換工具、換框架客戶端代碼基本不用動。2.1 服務(wù)化之后客戶端只認(rèn)一個 base_url在應(yīng)用里開啟本地服務(wù)默認(rèn)監(jiān)聽在本機的一個端口上常見是 1234端點路徑和主流格式一致/v1/chat/completions、/v1/completions、/v1/models、/v1/embeddings。這意味著你可以直接用官方的 OpenAI 風(fēng)格 SDK只把base_url指過來api_key隨便填一個非空字符串就行。from openai import OpenAI client OpenAI( base_urlhttp://127.0.0.1:1234/v1, api_keylocal-no-auth, # 本地服務(wù)不校驗但字段不能為空 timeout300.0, # 關(guān)鍵本地首字慢默認(rèn)超時太短 ) resp client.chat.completions.create( modellocal-model-id, # 必須和服務(wù)端加載的模型標(biāo)識一致 messages[ {role: system, content: 你是一個只輸出 JSON 的抽取器。}, {role: user, content: 從下面這段文本里抽取公司名和金額。}, ], temperature0.1, )這段代碼里有兩個地方最容易出錯。第一個是timeout。SDK 默認(rèn)超時通常是 60 秒或者更短本地模型如果正在首次加載或者 prompt 特別長很可能超過這個時間客戶端直接拋超時但服務(wù)端其實還在算。表現(xiàn)就是報錯了但模型后來又把結(jié)果算出來了日志對不上。我一般直接給到 300 秒寧可等也不誤判。第二個是model字段的取值。它必須和服務(wù)端當(dāng)前加載的模型標(biāo)識嚴(yán)格一致寫錯一個字都會返回 404 或者找不到模型的錯誤。穩(wěn)妥的做法是啟動時先打一次/v1/models把返回的列表打印出來確認(rèn)你要用的那個 id 長什么樣再寫進配置。models client.models.list() for m in models.data: print(m.id)這個習(xí)慣幫我省過好幾次時間。我有一次排查了半天為什么請求一直失敗最后發(fā)現(xiàn)是模型標(biāo)識里帶了個版本后綴我照著別人的示例少寫了一段。2.2 模型加載策略常駐、JIT 與 TTL 的取舍LM Studio 支持按需加載機制請求進來時如果模型沒加載它會自動去加載用完之后經(jīng)過一段空閑時間再卸載。這個機制對偶爾換模型試試的場景非常友好但對批量任務(wù)來說是個陷阱。原因很簡單按需加載意味著第一個請求要等模型加載完這個時間可能是十幾秒到一分鐘。如果你的批量腳本里每處理幾十條就要切換一次模型那總耗時會被加載開銷吞掉一大半。更麻煩的是如果在加載過程中客戶端超時重試會打進一堆重復(fù)請求把隊列堵死。我在實際項目里的做法是批處理開始前把所有要用的模型手動預(yù)加載并且關(guān)掉或拉長空閑卸載時間。LM Studio 本身提供命令行工具和界面兩種方式做預(yù)加載也可以用一個空的試探請求預(yù)熱——發(fā)一條只有一個字的消息把模型頂起來。def warmup(client, model_id, retries30, interval5): 發(fā)一條極短請求等模型真正就緒 for i in range(retries): try: client.chat.completions.create( modelmodel_id, messages[{role: user, content: hi}], max_tokens1, timeout180.0, ) print(f[warmup] {model_id} ready) return True except Exception as e: print(f[warmup] {model_id} not ready ({i1}/{retries}): {e}) time.sleep(interval) raise RuntimeError(f{model_id} 預(yù)熱失敗)這個warmup函數(shù)幾乎是我每個本地智能體腳本的標(biāo)配。它解決的問題是讓加載這件事發(fā)生在你控制的時刻而不是發(fā)生在批量循環(huán)的中間。什么時候該讓多個模型同時常駐什么時候該用按需加載我給一個判斷標(biāo)準(zhǔn)——看切換頻率。如果一批任務(wù)里模型 A 和模型 B 的調(diào)用是交替出現(xiàn)的一條任務(wù)里先 A 后 B那必須同時常駐否則每條任務(wù)都要吃兩次加載。如果是分段的前 500 條全用 A后 500 條全用 B那按需加載完全夠用還能省顯存。2.3 上下文長度這個旋鈕擰錯直接 OOM模型加載時一般可以設(shè)置上下文長度。這個值設(shè)小了長文檔會被截斷智能體的工作記憶不夠用設(shè)大了KV cache 線性增長顯存直接爆。而且有個隱含的坑有些模型配置文件里聲明的最大上下文很長但實際訓(xùn)練時用的長度并沒有那么長你硬設(shè)到最大值模型在后半段的注意力質(zhì)量會明顯下降表現(xiàn)是前面還記得后面就開始胡編。我的經(jīng)驗值是這樣抽取類、分類類任務(wù)2K 到 4K 足夠需要多輪工具調(diào)用的智能體8K 起步整篇長文檔分析按文檔長度給到 16K 或 32K但一定要同步確認(rèn)顯存扛得住。設(shè)完之后別忘了在請求層也做一次 token 預(yù)估和裁剪雙保險。3. 多模型協(xié)調(diào)規(guī)劃者、執(zhí)行者、裁判各管一段單模型智能體最常見的失敗模式是什么活都想讓一個模型干。它既要理解任務(wù)、又要拆解步驟、又要調(diào)用工具、又要檢查結(jié)果prompt 越寫越長長到一定程度之后模型就開始丟指令。多模型協(xié)調(diào)的核心思路不是用更多模型顯得厲害而是把互相沖突的能力要求拆開讓每個模型只面對一類問題。3.1 為什么一個模型干不完所有活拆開有三個實打?qū)嵉暮锰帯5谝皇?prompt 變短了。規(guī)劃者的 system prompt 只需要講清楚輸出什么樣的任務(wù)分解結(jié)構(gòu)執(zhí)行者的 prompt 只需要講清楚按給定步驟做這一件事。每個模型的上下文都很干凈指令遵循度明顯上升。我之前用一個 7B 模型同時做規(guī)劃和執(zhí)行光 system prompt 就寫了兩千多字結(jié)果它在第三步之后就忘了輸出格式要求拆成兩個模型之后兩個 prompt 各三百字穩(wěn)定得多。第二是模型能力可以錯配。規(guī)劃這件事對推理能力要求高對速度要求低用大一點的模型值得執(zhí)行如果是格式轉(zhuǎn)換、字段抽取這類活小模型完全夠速度快好幾倍。讓 32B 去干 7B 能干的事純屬浪費讓小模型去規(guī)劃復(fù)雜流程它拆不明白。第三是失敗隔離。執(zhí)行者某一條輸出格式不對重試就行不影響整體規(guī)劃。單模型一體化的話格式一崩整條鏈路全廢還得從頭再來。3.2 角色契約用 JSON 把模型之間的對話固定下來多模型協(xié)調(diào)最容易翻車的地方是模型之間怎么傳話。如果你讓規(guī)劃者輸出一段自由文本再把它塞進執(zhí)行者的 prompt那執(zhí)行者每次收到的格式都不一樣穩(wěn)定性完全靠運氣。我的做法是給每一對模型之間定義一個 JSON 契約。規(guī)劃者的輸出必須符合一個 schema執(zhí)行者只接受這個 schema。這樣中間層可以做校驗、可以做重試、可以做緩存。PLAN_SCHEMA { type: object, properties: { steps: { type: array, items: { type: object, properties: { id: {type: integer}, action: {type: string, enum: [extract, classify, summarize]}, target_field: {type: string}, instruction: {type: string} }, required: [id, action, instruction] } } }, required: [steps] }把action做成枚舉值是個小技巧可以極大降低下游的分支判斷復(fù)雜度。模型不會給你發(fā)明一個analyze_deeply這種沒法處理的動作名。請求時把 schema 傳給服務(wù)端如果當(dāng)前版本支持結(jié)構(gòu)化輸出參數(shù)就用參數(shù)不支持就在 prompt 里貼 schema 并加一句只輸出 JSON不要任何解釋然后在客戶端做一層解析容錯。import json, re def parse_json_loose(text: str) - dict: 從模型輸出里盡力摳出 JSON text text.strip() # 去掉常見的 markdown 代碼塊包裹 text re.sub(r^(?:json)?\s*, , text) text re.sub(r\s*$, , text) try: return json.loads(text) except json.JSONDecodeError: pass # 退而求其次截取第一個 { 到最后一個 } start, end text.find({), text.rfind(}) if start ! -1 and end start: return json.loads(text[start:end1]) raise ValueError(f無法解析為 JSON: {text[:200]})這個函數(shù)看著粗糙但在實際跑批中救回來的比例相當(dāng)可觀。小模型在 JSON 前后加一句好的以下是結(jié)果是家常便飯硬性json.loads會直接失敗而寬松解析能把這部分撈回來。3.3 兩段式流水線先批量規(guī)劃再批量執(zhí)行這一節(jié)是我認(rèn)為整篇文章里最值錢的部分。前面說過模型切換的代價很高那怎么在多模型協(xié)作的前提下避免頻繁切換答案是把按任務(wù)循環(huán)改成按階段循環(huán)。具體來說假設(shè)你要處理 500 條任務(wù)每條都需要先規(guī)劃再執(zhí)行。糟糕的做法是for task in tasks: # 500 次循環(huán) plan planner(task) # 切到規(guī)劃模型 result executor(plan) # 切到執(zhí)行模型好的做法是plans [planner(t) for t in tasks] # 500 次規(guī)劃模型不切換 results [executor(p) for p in plans] # 500 次執(zhí)行模型不切換代碼只差幾行性能差出好幾倍。原因就是模型加載和卸載的次數(shù)從 1000 次變成了 2 次。這個思路在本地推理場景下幾乎是必須的在云端反而不重要——這也是為什么很多照著云端教程寫的架構(gòu)搬到本地就跑不動。這個改造有個前提規(guī)劃階段的輸出必須能完整落盤執(zhí)行階段能獨立讀回來。也就是說你的中間結(jié)果必須可序列化、可持久化。這個要求順帶把斷點續(xù)跑的問題也解決了一半。流水線形態(tài)模型切換次數(shù)中間結(jié)果可恢復(fù)適用場景按任務(wù)循環(huán)交錯調(diào)用約 2N 次難任務(wù)量極小、交互式按階段循環(huán)兩段式2 次易批量任務(wù)首選三階段規(guī)劃/執(zhí)行/校驗3 次易質(zhì)量要求高的場景3.4 裁判模型的價值與成本第三個角色是校驗者也有人叫它裁判模型。它的工作是拿到執(zhí)行者的輸出判斷這條結(jié)果是否合格不合格就退回重做或者標(biāo)記出來。裁判模型能不能省取決于你的容錯成本。如果輸出只是給人看的參考稿人還會再掃一遍那裁判可以省。如果是自動進入下游流程的一個格式錯誤可能讓整個管道崩掉那裁判很值。裁判模型選型上有個反直覺的點不要用和被校驗?zāi)P屯吹哪P?。同一個模型對自己的輸出有天然的偏好它覺得這就是對的校準(zhǔn)效果很差。用不同家族、不同規(guī)模的模型做交叉校驗抓到問題的概率明顯更高。我用一個 14B 做執(zhí)行、一個 7B 做裁判抓格式問題很有效但如果兩者互換7B 執(zhí)行、14B 裁判雖然裁判更強但因為 14B 的判據(jù)更寬容反而漏掉一些小問題。這里面有點玄學(xué)建議用自己的數(shù)據(jù)實測。成本上要知道裁判這一步會讓總調(diào)用次數(shù)增加 50%如果三段式是規(guī)劃、執(zhí)行、裁判各一次。對于本地推理這個成本主要是時間不是錢所以要算清楚你的時間預(yù)算。我現(xiàn)在的默認(rèn)配置是格式類校驗用純代碼做正則、schema 校驗語義類校驗才用裁判模型能把裁判調(diào)用量壓掉一大半。4. 批量任務(wù)流水線從 CSV 到結(jié)果落盤前面的角色分工解決了誰來干這一節(jié)解決怎么干得快、干得穩(wěn)、斷了能接上。批量任務(wù)的工程量和單次調(diào)用完全不是一個量級很多在 demo 里不是問題的問題在 500 條、5000 條的規(guī)模下都會變成問題。4.1 任務(wù)隊列與并發(fā)閘門先明確一個反直覺的結(jié)論本地單實例場景下并發(fā)數(shù)設(shè) 1 往往比設(shè) 4 更快。原因在于本地模型的推理是計算密集型的GPU 的算力就那么多兩個請求同時進來各自分到一半算力總吞吐并不會提升反而因為 KV cache 占雙份顯存、調(diào)度開銷增加整體變慢。更糟的是并發(fā)一高上下文一長顯存占用峰值疊加很容易觸發(fā) OOM然后進程被系統(tǒng)殺掉前面跑的全白費。那想提速怎么辦兩條路。一是提高單條吞吐減少輸出長度、縮短 prompt、用更小的模型二是多開服務(wù)實例綁不同端口每個實例加載不同模型或同樣的模型靠實例數(shù)橫向堆。第二條路要求顯存足夠而且要注意每個實例都要獨立設(shè)上下文長度別一個實例設(shè) 32K 把卡吃光。我的隊列結(jié)構(gòu)大概是這樣的import queue, threading, json, time from dataclasses import dataclass dataclass class Task: task_id: str payload: dict retry: int 0 def worker(task_q: queue.Queue, done_ids: set, out_fp, lock: threading.Lock): while True: task task_q.get() if task is None: # 毒丸用于優(yōu)雅退出 task_q.task_done() break try: result process_one(task) # 真正的模型調(diào)用 with lock: out_fp.write(json.dumps( {task_id: task.task_id, ok: True, result: result}, ensure_asciiFalse) \n) out_fp.flush() # 關(guān)鍵每寫一條就刷盤 except Exception as e: with lock: out_fp.write(json.dumps( {task_id: task.task_id, ok: False, error: str(e)}, ensure_asciiFalse) \n) out_fp.flush() finally: task_q.task_done()注意flush()那一行。批量任務(wù)最怕的就是跑到一半進程掛了緩沖區(qū)里的結(jié)果全丟。每寫一條刷一次盤犧牲一點 IO 性能換來的是隨時可以斷、斷了不丟。4.2 斷點續(xù)跑別讓第 900 條失敗毀掉前面 899 條有了上面那個 JSONL 落盤續(xù)跑就很直接了啟動時把結(jié)果文件讀一遍收集所有task_id構(gòu)造任務(wù)隊列時跳過這些 id。def load_done(path): done set() if not os.path.exists(path): return done with open(path, encodingutf-8) as f: for line in f: line line.strip() if not line: continue try: rec json.loads(line) except json.JSONDecodeError: continue # 上次崩潰寫了半行跳過 if rec.get(ok): done.add(rec[task_id]) return done這里有個細(xì)節(jié)只把ok: True的算作已完成失敗的記錄留著但允許重跑。同時要處理文件最后一行寫了一半的情況——進程被殺的時候緩沖區(qū)可能寫到一半這一行是壞的 JSON解析失敗直接跳過就行不要因為一行壞數(shù)據(jù)讓整個續(xù)跑邏輯崩掉。用 JSONL 而不是一個大 JSON 數(shù)組也是同樣的道理。大數(shù)組要整體解析中途壞了整個文件都讀不了JSONL 是逐行獨立的壞一行不影響其他行。這個格式在日志類的批量場景里幾乎是標(biāo)準(zhǔn)答案。4.3 錯誤分類與重試策略不是所有錯誤都值得重試。我的分類方式是這樣錯誤類型典型表現(xiàn)處理策略上下文超限400 報錯提示超過最大長度不重試裁剪輸入后重新入隊顯存不足500 或連接被重置退避 30 秒后重試最多 2 次模型加載中連接拒絕 / 超時先 warmup再重試次數(shù)放寬JSON 解析失敗客戶端解析異常提高約束強度后重試最多 3 次內(nèi)容質(zhì)量不合格裁判模型判定換一種 prompt 策略重試最多 1 次重試要帶退避而且每次重試最好稍微改一下參數(shù)比如把 temperature 調(diào)低一點或者把 prompt 里的格式約束加強。同樣的輸入、同樣的參數(shù)、同樣的隨機種子跑兩次大概率得到同樣的錯誤這種重試純屬浪費時間。另外一定要設(shè)一個全局的重試上限防止某條毒數(shù)據(jù)把整個隊列卡死。我的做法是把重試超過 N 次的 task 丟進一個死信隊列文件主流程繼續(xù)往下跑跑完再統(tǒng)一人工看。4.4 結(jié)果落盤與可追溯批量任務(wù)跑完之后你多半會遇到這條結(jié)果為什么是這個的追問。所以每條記錄里除了最終結(jié)果我還會存三樣?xùn)|西用的哪個模型、prompt 的哈希、以及原始輸入。record { task_id: task.task_id, ok: True, model: MODEL_ID, prompt_ver: v3, # prompt 版本號改了就升 input_hash: sha1(task.payload[text]), result: result, elapsed_ms: int(elapsed * 1000), ts: int(time.time()), }prompt_ver這個字段看著不起眼后面排查問題的時候價值極大。你會發(fā)現(xiàn)有些結(jié)果質(zhì)量下降追溯回去是因為某次改了 prompt 但沒記錄導(dǎo)致新老數(shù)據(jù)混在一起沒法比較。有版本號就能按版本切分統(tǒng)計。elapsed_ms用來算平均耗時和 P95幫你判斷要不要換模型或者調(diào)并發(fā)。我一開始沒存這個后來想優(yōu)化性能的時候發(fā)現(xiàn)沒法量化只能重新跑一遍白花了兩個小時。5. 跑起來才暴露的三個坑上下文漂移、JSON 抖動、顯存不回收前面講的都是設(shè)計層面的事真跑起來之后問題往往出在你想不到的地方。這一節(jié)我把幾個印象最深的故障完整復(fù)盤一遍包括我當(dāng)時是怎么一步步定位的因為排查思路比結(jié)論更有復(fù)用價值。5.1 第 37 條開始返回空內(nèi)容一次完整的排查鏈路現(xiàn)象一批 200 條的任務(wù)前 36 條都正常從第 37 條開始模型返回的內(nèi)容是空字符串不報錯HTTP 200finish_reason是stop。第一步我先確認(rèn)是不是數(shù)據(jù)問題。把第 37 條的輸入單獨拿出來脫離批處理再跑一次——正常返回。排除了輸入本身的問題。第二步懷疑是狀態(tài)污染。因為我的執(zhí)行器是個帶記憶的智能體每條任務(wù)復(fù)用同一個對話歷史只在末尾追加新內(nèi)容。第 37 條單獨跑正常但如果在跑完前 36 條之后再跑它就復(fù)現(xiàn)了。這就鎖定了是歷史累積導(dǎo)致的。第三步打印上下文長度。果然跑到第 36 條的時候累計的 messages 已經(jīng)有 9000 多 token超過了我給模型設(shè)的 8K 上下文。服務(wù)端的處理方式是靜默截斷——把最前面的 system prompt 和最初的對話全砍了只留最后幾條。模型看到的是幾十條沒有頭沒有尾的對話記錄它不知道自己在干什么于是輸出空。這個坑的本質(zhì)是智能體的記憶和上下文窗口是兩回事。記憶可以存在外部文件、數(shù)據(jù)庫、向量庫但每次送給模型的只能是窗口內(nèi)那一段。把完整歷史一股腦塞進去必然溢出。修法有三層。第一層每條任務(wù)獨立不復(fù)用歷史。批量任務(wù)里 90% 的場景根本不需要跨條記憶復(fù)用歷史純屬自找麻煩。第二層確實需要多輪記憶時做滑動窗口加摘要保留最近 K 輪原文更早的用一次模型調(diào)用壓縮成一段摘要。第三層請求前做 token 預(yù)估超了就主動裁剪別等服務(wù)端幫你截——它截的位置你控制不了。def trim_messages(messages, max_tokens6000, keep_systemTrue): 粗略按字符數(shù)裁剪中文約 1.5 字/token留足余量 def est(m): return len(m[content]) * 0.7 total sum(est(m) for m in messages) if total max_tokens: return messages system [m for m in messages if m[role] system] if keep_system else [] rest [m for m in messages if m[role] ! system] # 從最舊的開始丟保留最近的 while rest and sum(est(m) for m in system rest) max_tokens: rest.pop(0) return system rest字符數(shù)乘系數(shù)這個估算很粗糙但足夠用。真要精確可以用對應(yīng)的 tokenizer 算不過在批量場景里粗略估算加足夠的安全余量性價比更高。5.2 結(jié)構(gòu)化輸出忽好忽壞第二個坑更隱蔽。用同一個 prompt、同一個 schema前面一百條輸出都是規(guī)規(guī)矩矩的 JSON從某一條開始模型開始在前面加一句好的以下是抽取結(jié)果后面又加一句希望對你有幫助。這個問題的根源是采樣隨機性。溫度不為零的時候模型每次選詞都有隨機性某一次它選了輸出一句客套話這個分支后面就順著這個分支走下去了。任務(wù)越多樣、prompt 越寬松觸發(fā)概率越高。我的處理是三層防御。第一層把 temperature 壓到 0.1 以下抽取類任務(wù)甚至可以 0。第二層在 system prompt 里用強約束的措辭不是請輸出 JSON而是只輸出 JSON第一個字符必須是左花括號不要輸出任何解釋、前后綴或代碼塊標(biāo)記。第三層客戶端用寬松解析兜底。還有一個容易被忽略的點max_tokens設(shè)太小也會導(dǎo)致 JSON 截斷。模型輸出了一個完整的對象但正好在}之前被截斷解析必然失敗。這個錯誤看起來像模型不會輸出 JSON實際上是參數(shù)設(shè)置問題。我在日志里加了一條判斷——如果finish_reason length直接標(biāo)記為輸出被截斷走重試并提高 max_tokens而不是走 JSON 修復(fù)邏輯這樣能省下不少無效重試。5.3 并發(fā)一開就掉速這個我最開始完全沒想明白串行跑 100 條用了 8 分鐘并發(fā) 4 跑同樣的 100 條用了 11 分鐘越并發(fā)越慢。排查下來是兩個原因疊加。第一GPU 算力被切分每個請求的速度都下降而總吞吐沒有提升——這是預(yù)期內(nèi)的。第二也是更致命的并發(fā) 4 的時候顯存占用峰值上去了觸發(fā)了 KV cache 的換入換出甚至有一次直接 OOM 導(dǎo)致服務(wù)重啟重啟之后又要重新加載模型這十幾秒的加載時間被平攤到整個批次上把省下來的時間全吃了。最終的解法是單實例串行 多實例并行。開兩個服務(wù)實例綁不同端口各加載一個模型兩個 Python 進程分別打不同的端口。這樣既是并行的又不會在單個實例內(nèi)部爭搶資源。代價是顯存要夠兩個模型同時常駐如果顯存不夠那就老老實實串行接受這個速度。方案顯存占用相對吞吐穩(wěn)定性單實例并發(fā) 4高峰值疊加差可能更慢低單實例并發(fā) 1低基準(zhǔn)高雙實例各并發(fā) 1高雙份權(quán)重約 1.8 倍高雙實例共享同一模型中需確認(rèn)是否共享權(quán)重取決于實現(xiàn)中這張表里的數(shù)字是我在自己機器上實測的量級你的結(jié)果會不一樣但趨勢應(yīng)該是類似的本地推理優(yōu)先保證單請求的穩(wěn)定橫向擴展靠實例不靠線程。6. 參數(shù)調(diào)優(yōu)把不確定性壓進可接受區(qū)間參數(shù)這事兒官方文檔給的默認(rèn)值是通用場景下的折中不是你這個場景的最優(yōu)解。批量任務(wù)和聊天對話對參數(shù)的要求差別很大前者要的是極致的穩(wěn)定和可復(fù)現(xiàn)后者要的是一定程度的多樣性。6.1 temperature / top_p / repeat_penalty 的組合我的默認(rèn)配置是這樣的參數(shù)抽取/分類任務(wù)摘要/改寫任務(wù)規(guī)劃/推理任務(wù)temperature0.0 - 0.10.3 - 0.50.5 - 0.7top_p0.90.90.95repeat_penalty1.051.051.1max_tokens按字段數(shù)估算 ×2按原文長度 0.31024溫度調(diào)到 0 的時候理論上輸出是確定的但實際跑起來你會發(fā)現(xiàn)同一個輸入兩次調(diào)用偶爾還是有細(xì)微差異——這是浮點運算和批處理順序帶來的不是參數(shù)沒生效。所以別指望絕對可復(fù)現(xiàn)能做到95% 一致就已經(jīng)很方便調(diào)試了。repeat_penalty這個參數(shù)在本地模型上特別容易踩坑。設(shè)得太高比如 1.3模型會為了避免重復(fù)而刻意換詞導(dǎo)致專有名詞、字段名都被改掉抽取任務(wù)直接崩。設(shè)得太低長文本生成會出現(xiàn)車轱轆話。1.05 到 1.1 這個區(qū)間比較安全抽取類任務(wù)盡量往低走。還有一點同一批次內(nèi)不要把參數(shù)改來改去。我吃過這個虧中途覺得輸出太死板把溫度從 0.1 調(diào)到 0.4結(jié)果同一批次里前半段和后半段的風(fēng)格差異明顯下游做統(tǒng)計的時候沒法合并。參數(shù)要改就整批重跑或者加版本號區(qū)分。6.2 讓模型少說話的三個手段批量任務(wù)里輸出長度直接等于時間成本。模型多寫一句廢話500 條任務(wù)就多花好幾分鐘。壓輸出長度有三個手段效果依次遞減。第一個是max_tokens。硬限制最直接。但要注意留夠余量設(shè)太小會截斷 JSON反而增加失敗重試。第二個是 prompt 里的顯式約束。不要只寫簡潔回答要寫具體的結(jié)構(gòu)要求比如輸出三個字段每個字段不超過 20 字不要輸出其他內(nèi)容。具體的數(shù)字比抽象的形容詞有效得多。第三個是 few-shot 示例。給一兩個示例讓模型照著格式走。示例的格式必須和你期望的完全一致包括有沒有空格、有沒有標(biāo)點。模型對示例的模仿能力比對指令的遵循能力強得多這是小模型最實用的一招。注意few-shot 示例會計入 token占上下文。如果你為了壓輸出而加了三個長示例可能反而更慢。我的經(jīng)驗是最多兩個示例每個控制在 100 字以內(nèi)。6.3 一套可以直接抄的配置把前面所有東西串起來一個能直接跑的骨架大概長這樣import json, time, queue, threading, hashlib from openai import OpenAI CFG { base_url: http://127.0.0.1:1234/v1, model_plan: your-planner-model-id, model_exec: your-executor-model-id, temperature_exec: 0.1, top_p: 0.9, repeat_penalty: 1.05, max_tokens_exec: 512, timeout: 300, } client OpenAI(base_urlCFG[base_url], api_keylocal, timeoutCFG[timeout]) def call(model, system, user, max_tokens512, temperature0.1, retries3): last_err None for i in range(retries): try: r client.chat.completions.create( modelmodel, messages[ {role: system, content: system}, {role: user, content: user}, ], temperaturetemperature, top_pCFG[top_p], max_tokensmax_tokens, ) choice r.choices[0] if choice.finish_reason length: max_tokens int(max_tokens * 1.5) # 被截斷抬上限重試 continue return choice.message.content except Exception as e: last_err e time.sleep(min(2 ** i * 5, 30)) raise RuntimeError(fcall failed after {retries} retries: {last_err})這段代碼里有幾個我認(rèn)為必須保留的細(xì)節(jié)finish_reason length的判斷并自動抬高上限、指數(shù)退避但封頂 30 秒、以及失敗之后拋出帶上下文的異常而不是靜默返回 None。靜默失敗是批量任務(wù)里最難查的問題寧可讓程序崩出來。7. 我把這套東西跑順之后的一些體會這套流水線我在幾個不同的數(shù)據(jù)批上跑過規(guī)模從幾百條到幾千條機器從單卡 16G 到單卡 24G。最大的體會是本地智能體的瓶頸基本不在模型能力上而在工程約束上。一個 7B 模型在結(jié)構(gòu)清晰的單項任務(wù)上表現(xiàn)可能比一個 32B 模型在混亂 prompt 下更可靠——因為前者永遠(yuǎn)不會超時、不會 OOM、不會因為上下文溢出而突然失憶。另一個體會是關(guān)于值不值得。本地跑批的時間成本是實打?qū)嵉囊粭l任務(wù)快則兩秒慢則三十秒500 條就是幾小時的等待。所以我現(xiàn)在會先花十分鐘做一個判斷這個任務(wù)的失敗代價高不高如果輸出要直接進下游系統(tǒng)本地跑 三重校驗就值得如果只是給人做參考人工掃一眼的成本比搭管道還低那不如手動來幾條。最后分享一個我覺得挺有用的小習(xí)慣給每個批次的運行日志打一個批次號并記錄當(dāng)時的模型配置、prompt 版本、參數(shù)快照。一個 JSON 文件就行幾十行。等到兩周后你發(fā)現(xiàn)某批結(jié)果有問題想復(fù)現(xiàn)的時候沒有這個快照你就得靠回憶去猜當(dāng)時用了什么配置。我因為這個習(xí)慣至少省過兩次通宵重跑。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91久热这里只有精品| 欧美另类精品xxxx| 草伊人高潮喷水超碰| 在线综合色| 视频一区二区免费在线| 我要去看2个日本美女.com曹逼| 啊啊啊啊啊好舒服视频| 偷拍 精品 另类 四区| 新婚人妻扶着粗大强行坐下| 尹人免费观看视频在线| 视频国产成人精品日本亚洲18| 91久久免费视频互動交流| 欧美日韩性爱精品| 国产白嫩漂亮KTV在线| 综合另类| 国产精品直播在线观看直播| 日本操逼无码| 精品无码一二三四区| 白 大 人妻 区 在线| 久久9精品网站| 成人久久精品| 精品无码久久久久| 午夜精品久久久久久久99热影院| 久久久999日本大片| 亚洲 自拍偷拍 欧美| 搡老女人老熟女91老熟女综合网| 日韩人妻精品| 青青草色插素人| 五月婷婷深深爱| 精品无人区麻豆乱码久久久| 欧美综合自拍| 东京热,男人的天堂| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久精品综合| 性爱乱伦网址| 天天操女人| 狠狠干2020| 人人操 欧美| 精品综合久久久久久五月天| 色黄色美女大长腿午夜视频| 91丨熟女丨丰满熟女| 久久9久9久99久9久9| 亚洲综合另类色图| 日本精品一级二级三级| 青娱乐国产精品| 国产麻豆一级精品视频| 一二视频神马久久传媒| 任你干在线视频| 操人妻逼91| 综合久久2017| 欧亚性爱啪啪| 天天射网| 看日韩美女二区三区免费操逼视频 | 成人老鸭窝人人在线视频| 97国产成人精品免费视频| 五月丁香六月综合缴清无码| 香港澳门日本三级网站| 天天摸夜夜摸| 国产伊人自拍| 91在线视频免费中出| 久久久久9久久久久| 亚洲男人天堂网久久| 国产大片精久久久久久| 在线观看A啊啊啊| 夜夜操av亚洲一区二区| 后入日本1234| 草久在线| 天天草天天日| 亚洲色图欧美色图日韩色图| AA丁香综合激情| 久久久久9| 欧美性爱另类综合| 啊啊啊啊啊好舒服视频| 日本伦乱九九九综合| 午夜天堂精品久久| 在线观看一级α片刺激高潮视频| 人妻社区男人天堂| 370p日韩欧美亚洲精品| 97精品国产97久久久久久户外免费| 日韩欧无码一区二区三区免费不卡| 自拍偷拍国产欧美日韩韩| 天堂精品| 国产多人在线观看视频| 亚洲国产第一页综合视频| 欲色影视综合吧| 91爱看| 97超碰大| 欧美大香蕉同搞| 天天干夜夜操网| 激情综合五月婷婷| 四虎视频在线观看| 日韩三级伦理中文字幕| www.狠狠干.coom| 国产乱弄免费在线视频。 | a人片中文字幕一区二区| 一二三四区电影| 一级片视频啪啪| 亚洲成熟国产精品美女| 精品无人区麻豆乱码久久久| 日韩本不卡视频在线观看 | 国产超碰| A V视频日本| 午夜色婷婷| 人人摸人人干| 日骚逼视频| 天天插夜夜操| 啊啊啊啊啊啊啊国| 国产精品伦理| 国产高清免费不卡av| 超碰97网址| 色呦色呦色精品| 亚洲 暴爽 AV人人爽日日碰| 日韩在线观看字幕精品| 日han少妇无码| 老熟妇一区二区三区…| 91狠| 一区二区不卡免费| 屁屁影院一区二区三区国产 | 91精品国产综合久久久蜜臀| 日本国产二线女色| 日本在线视频导航| 亚洲综合一| 岛国在线免费视频| 亚欧操逼片在线观看 | 青春草莓视频在线观看网址| 91黑丝露脚| 欧美亚洲国产日本在线,久久精品国产| 欧美草草高清日韩视频| 国产精品高潮久久久无码| 久思思热视频在线观看| gogogo免费高清看中国国语| 亚洲 欧美 日韩 国产一区二区 | 日本综合久久| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 91老司机在线| 九九Av| 国产外初女出血视频| 亚洲第一综合| 伊人久久婷婷| 91少妇人妻| 欧美色图天堂在线| 青青在线视频日韩欧美| 丰满人妻一区二区三区在线| 欧洲综合无码| 久久久久婷婷精品av电影| 黄片免费视频2019| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 天美国产三级传媒| 无码人妻精品酒店| 超碰天天操| 老司机老司机午夜影院| 天操天操夜操夜月月年年操操| 国产又色又粗又黄又爽| 黑丝自慰喷水网站| 一类无码操逼视频| 丁香六月婷婷久久综合| 长长久久免费视频| 欧美同性恋 的搜索结果 - 91n| 粉嫩不卡一区二区性爱| 中国特猛少妇色xxx| 欧美色五月| 大香蕉免费3| 爱干爱射网啊啊啊| A久久| 亚洲图片 激情小说| 综合激情97 | www.婷婷| 色哟哟av网址| 偷拍欧美综合| 国产精品亚洲无码| 色吊丝 日日骚 清纯唯美| 欧美综合色,www| 久久久久久九九九| 欧美亚洲成人在线一区二区三区| 性爱视频久久| 四季av一区二区凹凸精品小说| 国产欧美一区二区| 精品无av| 亚洲精品国产精品乱码不卡| 99热色精品| 无码不卡亚洲成?人片| 日韩激情视频| 欧美日本久久精品一区| 2020国产精品| 欧美精品99久久久**| 91狠狠综| 在线电影亚洲色图| 午夜精品久久久99| 99色| 99这里有精品| 久99热| 国产日产精品久久快鸭的功能介绍| 96国产污污污丝袜| 人妻日日干| 国产久久日| 桃色五月天| 操逼逼中文字幕| 看日韩黄片| 91精品国产91熟女| 国产99久久99热这里只有精品15| 国产精品高潮久久AV| h在线看免费版在线看| 日本不卡二区| 亚洲综合第一页| 97视频在线视频| 亚洲欧美精品久| 国产精品午夜精品| 超碰人人在线| 国产黄片在线免费观看| 国产精品麻豆免费视频| 影音先锋日本一区二区| 国产精品久久久久无码Av网曝门| 中文字幕三四区| 91性片| 91N综合网| 欧美日韩另类字幕中文| 眼镜人妻101.com| 99热在线不卡| 亚洲精品骚逼| 99啪啪| 色婷婷99| 麻豆黄四叶草网站| 日产精品久久久一区二区| 精彩国产视频播放1区2区| 高清在线偷拍自拍视频| 久久久三区二区一区| 青娱乐国产剧情av一区| 人人操人人肉久久精品| 97神马久久| 欧美天天搞| 熟女视频久久| 亚洲男人综合| 亚洲无无码αⅴ每日更新| 极品美女福利在线观看| 久久女同性恋一二区| 97香蕉人人乳| 开心五月婷婷激情| 伦在线97| 欧美日韩另类字幕中文| 9ⅰ久久久天天| 美女91av| 国产 日韩 欧美一区| 91处女在线观看| 欧美日韩国产一区二区小黄片大全| 91一区二区三区蜜桃| 99亚洲精品| 国产精品久久久久久片| 嗯嗯嗯好爽| 香蕉久久精品| 久久久精品视频欧州站| 亚洲中文字幕在线视频一区二区| 欧美一区二区日韩三区| 九九色影院| 中文字幕日韩综合| 伊人久久亚洲色欲综合网站| 操逼片中文| 亚洲精品人妻吞精av| 色婷婷在线视频| 日韩精品高清资源在线| 精吧天堂| 岛国在线一区二区三区| 久久天天躁日日躁狠狠躁| 伊人一区二区三区| 97久久国产| 亚洲色欲天天天堂色欲网女| 无遮挡猛进视频免费无限观看| 免费精品99| 亚洲高清内射| 天天日天天干少妇日| 国产精品久久久久久亚洲色欲| 乱伦a片视频| www.久久| 五月天人妻综合| 精品一区二区成人动漫| 园内精品自拍视频在线播放| 丝袜美腿射精91| 五月天黄色av| 中文无线日韩一区| 日日噜噜夜夜久久亚洲一区二区| 黑丝内射一区二区三区| 日韩人妻播放| 黑人无码一区二区| 亚洲一区二区三区麻豆传媒| 日韩成人小视频| 飘花国产午夜精品不卡| 五月天婷婷色色| 欧美一级AAAAAAA| 超碰色综合| 探花熟女,姿勢到位,體驗感也到位| 九九热精品| 东京热熟女亚洲视频网站| 国产乱伦视频污| 91GD.COM| 精品国产乱码久久久影院| 中文字幕一区二区在线日韩精品| 99性爱| www.高清无码诱惑一区.com | 亚洲 欧美 第一页| 日韩精品一区的| www.av不卡中文字幕| 国产精品久久妻无码网站| 久久精品国产精品亚洲艾通辽熟妇| 欧美亚洲日韩16色| 影音先锋每日最新资源在线观看| 人妻天天夜夜爽一区二区| 精品人妻一区二区蜜桃视频 | 亚洲五月婷| 亚洲天堂久| 亚欧成人中文字幕一区| 骚货 中文字幕 av| 日韩AC| 色网综合网| 欧美性爱中文字幕无线码| 欧美亚洲涩涩| 国产高清精品福利| 99久久99九九99九九九| 99色视频| 免费日韩黄片| 丰满欧美放荡少妇在线| 大香蕉伊人久久| 精品人妻久久久久一区二区三区| 亚洲在线| 欧美中文字幕日韩在线| 国产操逼网站亚洲一级黄色| 欧美熟妇乱码在线一区| 操逼无码操逼| 天天日熟妇| 黄片在线免费在线观看| 欧美96精品在线| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 色久桃花影院在线观看| 久久大精品乱码视频人妻熟女| 久久黄色性爱视频| 青青草国产一区二区三区| 在线啊v一区| 91色宗合| 亚洲精品黑丝| 猛交交| 亚洲精品国产精品成人| 亚州色国| 日韩精品一二三四| 97国产精品视频| 一本一首道人妻少妇免费久久| 成人亚欧免费视频| 国产精品久久| 久久精品人妻一区二区| 99激情视频| 日韩性爱小视频| 尤物视频网 刘玥| 欧美日韩超碰在线| 男人a天堂手机在线版| 国产精品操| 97色涩| 婷婷99| 无遮挡一级毛片视频免费的| 97在线/亚洲| 亚洲另类色图片| 青娱乐国产精品| 97超碰超碰| 久久精品中文字幕女同| 东北女人被操| 国产野战露脸在线播放| 国产视频第2页| 麻豆久久久久久久久丝袜| 久久久久女教师免费一区| 97亚洲在线| 久久久久久久久久黄色网| 青娱乐91| 亚洲一区日韩精品中文字幕| 人妻天天爽夜夜爽爽| 欧美强奸乱能| 看免费一级在线播放毛片| 精品免费成人久久| 精品国产乱码久久久兰草影视| 91精品综合久久久久久五月丁香| 国产女生在线| 日韩 欧美 另类 人妻| 91超碰在线| 风间由美日韩欧美久久| 老熟乱一区二区三区四区| 深夜国产一区二区三区在线看| 人妻一区二区三区熟女| 九九九九久久久久| 97婷婷色| 999精品乱码| 97人人草| 免费视频一二三区| 欧美综合亚洲| 色婷婷影视| 人妻人人澡人人爽人人| 亚洲AV无码黄色强奸| 青青青国产手线观看视频2| 国产女人和拘做爰视频| 99国产精品自在自在| 久久黄黄黄| 人人天天欧洲| 亚洲情色第一页| 色情综合网| 日本精品成人无码| 天天看,天天做| 无码乱人伦中文视频| 啪啪啪精品视频| 另类TS人妖一区二区三区| 欧美色www亚洲国产阿娇要播| 天天射夜夜操| 亚洲综合大片| 亚洲无码com| 偷拍亚洲高清图片| 久热精品色情| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 超碰久超碰久| 美女黄网| 2019久久久久久久久福利| 可能人人看人人摸| 超碰在线国产| 午夜经典| 亚洲骚男同com| 欧美精品亚洲精品日韩传电影| 亚洲激情深爱文学小说网站| 99re这里只有精品2| 91亚洲人| 亚州一区二区| 少妇人妻好深太紧了vr91| 乱伦图一区| 亚洲操人| 久久亚州高清| 天天干1区2区在线| 欧美色网| 五月丁香社区婷婷日韩欧美精品影院| 成人精品在线| 精品视频专区| 综合亚州欧美| 91丨九色丨国产丨人妻在线 | 日韩av电影网站| 精品国产乱子伦一区二区三区,精品一| 97碰久久| av在线免费一区二区| 日韩av在线播放不卡| 屁股久久久久久| 久久精品人妻一区二区| 久综合国内精品自在自线| 国内三级自拍小视频在线观看| 国产激情久久久| 天天操女人| 成人久久久精品| 麻豆美女丝袜人妻中文| 顶级丝袜熟女一区二区三区| 免费看美国人人爽,人人操| 久久久久9999精品九九九| 九九av| 无码外流操逼视频| 花野真衣| 好爽视频在线观看| 91丨豆花丨熟女| 天天爽爽爽爽| 亚洲图片偷拍欧美| 三级特黄60分钟播放| 九九九九九九九精品视频| 久久久久久久久久久久欧美日| 国产乱不卡| 91人妻最真实刺激绿帽| 久久精品欧美一区蜜桃| 国产又粗又长的视频| 亚洲囯产精品女人久久久| 欧美天天插| 97射欧美| 国产色呦呦| 国产精品视频| 狠狠色噜噜狠狠狠狠2018| www.99热| 国产日韩怡红院| 人妻熟女av国产网站| 成人在线视频一区| 国产成人自拍视频视频| 性色高清在线| 极品销魂美女一区二区| 极品色社| 欧美狠狠干| 国产 日韩 欧美 人妻 熟女 中文| 欧洲综合视频| 国产午夜激片Av毛片不卡| 蜜臀av在线播放一区二区三区| 精品国产av一区二区三区四区入口| 超碰这里只有精品| 东京成人一区| 久久a久久| 啊啊啊啊啊啊好湿好爽视频| 91高清欧美| 热99这里有精品综合久久 | av在线资源| 精品久久久久久无码| 色月天AV导航| 久久久性| 99黄页网站| 日韩精品在线观看观看| 91欧美另类| 在线视频免费播放一区| 综合激情一一91| 丁香六月激情| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 大屁股国产在线视频| 97在线观看免费视频| 美女性91| 九久精品| 日本天堂网| 国产91久久九九免费精品无码| 久久久久久久久久久久九| 国产精品干干干| 一区二区三区成人| 免费1级a做爰片观看| 国产诱惑| 色五月激情综合网| 韩国一级做a久久久久| 91偷拍欧美亚洲| 国产家庭乱伦性爱视频| 91美女视频。| 四虎AV影视国产精品亚洲精品| 强奸乱伦麻豆| 精品999一区二区| 久久综合日韩亚洲欧美| av在线免费一区二区| 色综合一区二区三区| 欧美三级免费伊人| 91精品国产麻豆国产自产在| 日韩av电影成人在线| 啊啊啊久久久视频| 久久久精品日本一道| 午夜操逼不卡| 天天爱天天操| 偷拍片久久| 综合色图,成人综合网| 一本色道综合久久欧美| 日韩欧视频| 九九热免费视频| 97视频www| 欧美国产操逼| 91久久堂| 东京热大香焦| Julia Annxxxxx| 欧美九九爱| 亚洲猛交| 69久久久久久久久久久久久| 92福利社视频| 青娱乐久久艹| 级做a爱无码性色永久免费| 怡红院亚洲怡春院av| 亚洲情色一区三区| 人人人人人人少妇| 黑人黄片在线免费观看| 亚欧性爱无码| 日本淫乱女一区二区三区视频| 超碰 国产熟女精品一区| 一起草三级AV电影在线观看| 小视频国产| 精品人妻一区二区三区在| 丁香7月婷婷| 99热欧美| 超碰久热| 日韩啪啪啪视频| 人妻天天夜夜爽一区二区| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 97国产精品久久久久| 伊人影院在线理论播放 | 日韩亚洲中文字幕在线| 涩综合导航| 亚洲自拍偷拍视频在线 | 日本 欧美 亚中文字幕| 91|九色|国产熟女| 亚洲欧美国产其他二区| 国产尤物AV尤物在线观看不卡| 无码国产Av| 久久久精品电影| 亚洲成人激情小说视频| av网站在线看| 精品视频久久| 欧美97色| 婷婷五月天激情四射| 91美女小视频| 97在线免费观看| 97综合网| 一个国产在线综合网站| 日韩高清黄片| 园内精品自拍视频在线播放| 欧美日韩香蕉| 亚洲国产欧美另类自拍| 约操熟妇| 国产精品午夜高潮呻吟久久av| 国精精品无码一二三区水多多| 久久黄色性爱视频| WWW黄片COM| 这里只有精品视频| 夜夜操av亚洲一区二区| 91美女在线视频| 亚洲天堂资源| 欧美亚洲宗合色性图| 九久久精品| 青草一区二区| 国产高清视频无码在线| 日韩 欧美 视频 在线 一区| 久久五月综合| 九九玖玖精品| 91丝袜美腿片| 色综合天天爱去电影网| 高清无码久操视频| 性饥渴少妇av无码毛片| 国产一区96在线| 午夜AV人气不卡| 天天综合网~69| 亚洲伊人a线观看视频| 日韩性爱免费视频在线网站| 天天干一干| 草久久久| 五月婷婷青青草娱乐伊人| 大香蕉懂9| www.久久制服糖| 日本高清一区二区在线| 一二三啪啪专区| 综合色欧美| se吧提供国产乱老熟视频胖女人| 国产懂色精品国产av| 亚洲国产精品久久久久婷婷青年| 亚洲老司机123专区| 无码粉嫩白虎一线天b区| 成人性爱免费播放| 超碰AV在线| 精品久久久久久久久久久久| 亚欧洲日韩国产精品| 欧美黄色大片在线观看| 色婷婷在线视频| 天天日美女的B| 国产熟妇 码视频户外直播| 日韩欧美一级特黄大片| 91偷拍欧美亚洲| 欲香欲色综合天天伊人| 欧美性巨大╳╳╳╳╳高跟鞋| 国产性久久久| 久久宗合亚洲| 久久久久久久唑| 综合自拍| 加勒比伊人影院| 久久久久亚洲熟妇熟女| 水野优香在线观看| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 大学生口爆吞精| av天天在线观看| 男人的天堂三级| 亚洲中文一区二区三区| 9热9热综合网| 亚洲本色精品一区二区久久| 五月丁香六月激情综合| 91天堂丝袜美腿| Blackedraw视频一区二区| 超碰99热中文字幕| 人人操人人干xxx| 亚洲欧洲综合视频在线| 久久久久极品| 色欲日韩欧美在线一区| 美女网站黄页| 自拍偷拍 日韩无码| 精品中文日韩字幕视频| 无码 黑人一区二区三区| 91亚洲不卡一区| 99操碰| 丁香五月性| 91精品国产高清久久久久久,亚洲成人| 中文字幕人妻丝袜| 天美传媒AV在线| 色噜噜狠狠色综无码久久合欧美| 人妻熟妇一区二区三区| 99操视频| 精精品人妻一区二区三区| 可以免费观看的AV| 欧美91变态| 免费A V在线| 亚洲综合一| 丝袜美腿制服人妻二区中文字幕 | 美女黄页网站| 天天摸夜夜操视频| 久久夜黄色无码A级大片| 国产精品毛片| 人人爱人人操人人性| 亚洲色综网| 久久xxxx| 韩国一级做a久久久久| 强上我不卡卡| 无码精品久久久天天影视| 啊啊啊好疼| 五月婷婷色色| 91香蕉国产尤物视频| 色综合加勒比四四季| 久久av一级av少妇av高潮| 欧美手机在线综合| 色五月婷婷麻豆在| 国产乱伦性爱区| 日韩精品一区,二区 九九...老司机| 国产精品自拍欧美在线| 国产99999久久精品| av资源在线播放天堂| 九九九九免费| 伊人aaa| 婷婷在线精品| 欧美 精品国产制服第一页 | 宅男影院久久久,99| 欧美,亚洲,日韩,v,天堂,手机在线观看| 久久直播国产| 99re99| 夜夜 中文视频rt| 日韩av乱伦| 97色伦97色伦国产欧美| 大色网久久| 夜夜操夜夜爽夜夜高潮| 国产亚洲精品第一最新| 91美女视频| 国产99999久久精品| 久久黄黄| 亚洲欧洲美腿丝袜| 美女91色黄18| 免费观看欧美日韩操逼视频| 囯戸精品高潮呻吟旡码| 欧美后入式| 操人妻逼91| www.婷婷| 精品毛片av一区二区| 大粗鳼巴久久久久| 经典丝袜一区| 91亚洲影院综合| 色五月激情网| 把腿张开老子CAO烂你| 国产在线视频午夜精华在| 黑人粗大V S日韩女优视频| 夜夜高潮夜夜爽高清视频一| 99热伊人| 天天干天天燥| 日韩一级性爱无码| 极品色| 91热| 青青草一本道福利视频| 人妻内射一区二区在线视频| 久久婷婷国产一区二区色| 在线啊v一区| 免费一级特黄特色大片在线观看看 | 日韩欧美中文字| 亚洲国产综合视频| 91A欧美电影网站| 日韩在线观看AV| 天天草AV| 中文字幕人乱码中文字的预防方法| 中文字幕一区 二区三四五 区日 日骚| 国产 丝袜 欧美中文 另类| 日韩在线一区高清在线| a片在线播放| 超碰免费97| 欧美97在线欧| 色噜噜国产精品视频一区二区| 国产精品伦理| 狠狠爱夜夜干| 中文字幕免费看| 岛国不卡超碰护士AV在线播放| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 激情五月天色播| 丝袜加勒比| 中文字幕在线观看第二页| 99色热| 天天插天天射| 亚殴在线| 欧美五区| m欧洲一级午老| 欧美性爱网97| 亚洲欧美日韩电影网站一区 | 精品然女一区二区| 麻豆色约约| 9久久久久久| 99re99| 国产极品一区二区三区三州| 夜夜高潮夜夜爽高清视频一| 狠狠操天天干| 欧美熟爽综合| 老汉网| 在线观看成人性爱免费小视频| 91在线美女| 躁躁躁日日躁2020| 精品蜜乳AV免费观看| 精品视频在线观看| 欧美性爽xyxOOOO| 日韩色欲久久一二三四区| 免费啪啪一级视频| 少妇同性| 青娱乐福利99| 国产美女mm131爽爽爽爽| av大香蕉| 超碰 av 女人天堂| 久久久91福利姬| 天天草天天日| 无码日韩人妻av一| 少妇二级| 国产欧美成人精品| 久久久精选| 911av网站免费观看| a久久| 欧美91在线+|+欧美| 青青五月天| 人人艹亚洲| 国产激情综合五月久久| 激情婷婷五月天| 精品一二三区四视频| 97久久超碰日韩精品| 夜夜操天天肏| 97天天插| 不卡中文字幕aⅴ在线| 久久久无码av精| 婷婷国产精品九区| 91亚.色| 狠狠久久手机视频精品| 精品国产一级久久| 亚洲永久永久永久永久一级一级一级精品| 日韩 女同 综合| 亚洲一区中文精品| 久久精品无码专区| 五月天色色网站| 伊人网综合在线视频| av网站免费线看| 日韩成人人妻网站| 国产99999久久精品| 天天综合官网| 精品天堂| 欧美中字不卡| 2017天天插| 青青草日本中文字幕| 亚洲国产婷婷在线播放| 日韩色图 一区二区| 久久综合激情| 一级做a爰片久久毛片图片| 人、人、摸,人、人、草| 亚洲欧洲色情高清| 九色PORNY9l原创自拍| 久久国99999| 国模精品一区二区三区苹果色戒| 顶级丝袜熟女一区二区三区 | 男人天堂最新手机版在线青青草| www.91人妻.com| 视频在线观看一二三区| 96一区二区| 免费看日产一区二区三区| 超碰97亚洲区| av在线一区二区三区| 啊啊啊97视频| 搡老女人老91二区| 婷婷导航| 无人区高清电影免费观看一区二区三 www.qmcai2.com | AV天黑人| 立川理惠无码一区二区| 操死我了啊啊啊| 国产精品极品美女视频| 亚洲男人的天堂在线看| 思思热在线视频免费| 免费a在线播放v| 亚洲AV在线资源| 亚洲古典另类欧美在线| 国产精品乱码久久久、久久| 成人性爱免费播放| 91久久18禁| 色色色色日本| 97精品97久久| aaa一级黄片| 欧美一区二区| 久久久久久亚洲精品不卡人乳 | 欲香欲色| aaa淫乱视频| 日韩卡一卡二卡三在线| 亚洲欧洲第二视频在线观看色图| 久久精品人体| 国产在线观看一区二区三区| 久久九七| 久久精品国产亚洲AV高级北京| 亚洲精品国产av天美传媒| 日本成人A片网站| 超碰久久综合| 丁香五月天堂网| 偷拍综合网| 久久久久久九九九九-美女久久久久久久-成人AV | 一级人妻性爱视频| 日韩精品第3页| 一区在线国产播放| 中文精品少妇天堂| 丰满人妻-区二区三区免费| 亚洲精品久久久久毛片A片拉屎 | 日韩精品亚洲专区在线影视| 在线 欧美 亚洲| 色婷婷丁香五月| 国产无吗在线播放| 妇女乱色二区| 九九色逼| 亚洲无码国产精品久久| 五十路熟女,国产欧美精品区一区二区三区| 亚洲高潮影院| 天天做天天爱| 在线有码中文字幕| 天天α片| 99热超碰在线| 成人小说视频在线精品欧美| 91精品婷婷国产综合久久| 成人福利视频网| 久久专区| 日本高清一本二本免费不卡| 116美女午夜| 女人午夜视频777| 欧美性xxxxx狂欢| 国模久久在线| 好吊色一区| 国产女乱淫真高清免费视频| 久久免费中文字幕在线观看| 欧美亚洲综合色| 在线色资源| 近亲乱伦一区二区| 久9爱经典视频| 久久久久久久伊人精品| jiujiujiujingpin| 亚洲黄色视频在线观看视频| 99re热有精品视频国产| 97操综合| 91中文精品日韩欧美在线 | 精品人妻久久久| 久久神马影院| 2020国产精品| 99国产精品视频尤物| 欧美综合亚洲综合| 一本一道久久综合久久| 精品人妻一区二区乱码一区二区| 欧美αv.com| 2019天天干天天操| 青娱乐老司机视频| 国产精品诱惑| 欧美激情内射| 日夜尻逼网| a片亚洲一本通视频| 超碰97资源中文字幕| 激激五月| 婷婷激情五月综合| 欧美综合区| 亚洲国产成人福利在线观看| 亚洲码在线中文在线观看| 色欲av一区二区三区蜜芽| 91男人天堂网| 思思热国产在线视频| 亚洲日韩在线a不卡99精品| 精品玖九九久| av久日| 久久999久| 久日91在线| 日本二三四区| 小草三级久久观看| 日本大香蕉综合网| 国产精品一区二区后入| 六六久久日韩不卡| 人妻乱仑一区二区三区| 亚洲国产成人精品999| 国产蜜臀在线| 欧美日韩 强奸乱伦| 五月天激情四射| 久久久精品网站| 加勒比海色香蕉婷婷| 国产一级久久久| 天天天天天天天天天天干美女| 精品九九国产无码| 一本久道久久综合狠狠爱一密臀精| 亚洲色人阁| 97久久超碰亚洲| 91美女片在线| 97超碰精品| 搡老熟女老女人老熟妇免费视频| {男男暴菊gay无套网站| 色色99| 日韩二级| 极品色社| 91久久18禁| 看黑丝美女操逼青青网站| 亚洲限制级| 亚洲在钱| 丰满人妻-区二区三区| 少妇综合| 一区AV| 国产久久av| 久久女婷| 激情第四色| av天堂电影网| 欧中美三级一区二区三区| 欧天美中出| 97精品全部| 中文字幕AV乱伦| 久9视频| 超碰在线人妻不卡| 超碰 国产熟女精品一区| 久久九九热| 爽爽淫人网| 外国免费性情大片| 国内毛片无遮挡国产| 五月天激情四射| 丝袜制服字幕在线| 96麻豆精品一区二区三区| 人人妻人人爱人人玩| 二男一女成人A片| 精品久久一区二区三区四区五区| 青青草手机在线免费观看| 亚洲色图A| 日本熟妇人妻中出视频| 久插综合| 91熟女视频| 亚洲五月婷婷| 最新9久久久9免费视频| 91福利网在线观看| 久久曰曰| 福利天天都操| 欧美老妇曰批的视频| 欧美少妇一区二区三区| 人妻夜爽夜夜爽| 99久久久er直播网址| 中文字幕97色| 99精品国产户外露出| 天天拍天天操| 日本免费二区三区| 夜夜影视四色| 伊人 俄罗斯 a v| 青青青国产手线观看视频2| 九色97| 亚洲男人天堂2017| 国产无套粉嫩白浆在| 风骚少妇视频中文字幕| 日本性爰一道本| 国产乱弄免费在线视频。 | 国产丝袜一区二区三区| 中国女人内射6XXXXX| 97日视频| 精品国产一区二区三区在线播出| 日本熟妇熟色97一本在线观看| 欧美色另类| 亚洲精品男人的天堂| 操久久久久| 五月婷婷色| 午夜在线播放| 又黑又大又粗| 欧美色欧美| 操人妻丝袜高跟| 精品国产一区探花在线观看| 97国产色综合| 婷婷色色五月天福利| 四季AV综合网址| 国产精品福利视频播放| 精品一久久久| 色色福利| 999热日韩精品| 男人天堂2019亚洲| 黄骗免费网站| 色好看av| 淫荡少妇免费| 国产精品另类一区大香蕉| 五月婷婷基地| 91骚熟女| 欧美国产视频| 岛国黄| 欧美一区二区一级岛国大片| 国内精品不卡无毒99999| 99热免费| 啊啊啊不要好疼视频| 麻豆天美国美国产AV| 2011国产精品| 欧美美女在线高潮999| 夜夜狼人妻| 久久久∴| 人妻夜爽夜夜爽| 伊人宅男大香蕉| 中文字幕诱惑制服人妻丝袜美丝袜美| 色天堂综合| 精品无av| ss久久| 人人人人插| 天天综合官网| 白丝少妇一区二区| 欧美劲爆视频一区二区| 天天干18禁| 午夜啊啊啊| 综合一区中亚洲国产成人综合精品 | 亚洲综合另类色图| 夜夜爽夜夜操| 亚洲se电影| 欧洲亚洲人妻无码中字久久三区四区| 久久人爽| 免费家庭乱伦视频| 久久精品国产久精国产| 激情婷婷| 国产亚洲精品美女久久久| 麻豆色约约| 97干天天| 婷婷六月色| 亚欧成人综合影院| 亚洲男人天堂av| 99热日| 爱爱60秒免费视频| h无码动漫在线观看| 人人操,人人液| 少妇高潮九九九九九九九| 欧美狠狠操| 精品一区二区啪啪啪| 黄骗免费| 精品蜜乳AV免费观看| 国内精品99999| 欧美少妇色综合| 厕所偷拍在线| 99热啪啪| 亚欧性爱ab| 亚洲精品性爱片| 国产捆绑一区| 色色九区| 亚洲91射| 欧美玖玖爱免费玖玖| 78久久久| 91女人的网站| 五月天伊人| 1769精品一区二区三区| 亚洲欧洲综合av在线| 中文字幕av亚洲精品| 亚洲av资源| 国产97/欧美| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 性天堂| 亚洲人妻精品一区二区| 在线电影亚洲色图| 加勒比人妻综合| 最新av在线| www.高清无码诱惑一区.com| 操我啊啊啊啊啊| 丰满人妻一区二区三区免费,| 不卡啪啪视频| 色官网在线| 全球成人中文在线| 欧美大香蕉专区网| 乱伦图一区| 黄页网站免费高清在线观看| 一级毛片久久久久久久女人18| 无码久久国产 | 欧美色图片欧美色图| 操操逼视频| 茄子社区国产精品| 98一区二区精品| 国产中文字幕在线点播| 凹凸 69堂 在线播放| 欧美中文狠| 夜夜操夜夜爽夜夜高潮| 91麻豆va国产精品| 日韩操逼HD| 久久黄片国产一区二区| 97网色| 男人的天堂VA在线| 国内一区二区三区| 97久久资源| 欧美人妻熟女在线| 欧美亚洲韩国视频十五区| 日韩特一级久久| 精品少妇高潮久久| 欧美性夜| 欧美色图片|