精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

還能這樣?把Python自動翻譯成C++

新聞 前端
隨著深度學習的廣泛應用,在搜索引擎/推薦系統/機器視覺等業務系統中,越來越多的深度學習模型部署到線上服務。

 

一、問題背景

隨著深度學習的廣泛應用,在搜索引擎/推薦系統/機器視覺等業務系統中,越來越多的深度學習模型部署到線上服務。

機器學習模型在離線訓練時,一般要將輸入的數據做特征工程預處理,再輸入模型在 TensorFlow PyTorch 等框架上做訓練。

1.常見的特征工程邏輯

常見的特征工程邏輯有:

  • 分箱/分桶 離散化

  • log/exp 對數/冪等 math numpy 常見數學運算

  • 特征縮放/歸一化/截斷

  • 交叉特征生成

  • 分詞匹配程度計算

  • 字符串分隔匹配判斷 tong

  • 缺省值填充等

  • 數據平滑

  • onehot 編碼,hash 編碼等

這些特征工程代碼,當然一般使用深度學習最主要的語言 python 實現。

二、業務痛點

離線訓練完成,模型上線部署后,同樣要 用 C++ 重新實現 這些 python 的特征工程邏輯代碼。

我們發現, “用 C++ 重新實現” 這個步驟,給實際業務帶來了大量的問題:

  1. 繁瑣,費時費力,極容易出現 python 和 C++ 代碼 不一致

  2. 不一致會直接影響模型在線上的效果,導致大盤業務指標不如預期,產生各種 bad case

  3. 不一致難以發現,無法測試,無法監控,經常要靠用戶投訴反饋,甚至大盤數據異常才能發現

1. 業界方案

針對這些問題,我調研了這些業界方案:

《推薦系統中模型訓練及使用流程的標準化》

https://www.infoq.cn/article/2E6LCqb1GeqFRAjkkjX3

《自主研發、不斷總結經驗,美團搜索推薦機器學習平臺》

https://cloud.tencent.com/developer/article/1357309

《京東電商推薦系統實踐》

https://www.infoq.cn/article/1OkKmb_gEYNR3YqC9RcW

“模型線上線下一致性問題對于模型效果非常重要,我們使用特征日志來實時記錄特征,保證特征的一致性。這樣離線處理的時候會把實時的用戶反饋,和特征日志做一個結合生成訓練樣本,然后更新到模型訓練平臺上,平臺更新之后在推送到線上,這樣整個排序形成了一個閉環。”

總結起來,有幾種思路:

  • 在線特征存儲起來給離線用

  • 在線 C++ 代碼編譯成 so 導出給離線用

  • 根據一份配置生成離線和在線代碼

  • 提取公共代碼,加強代碼復用,等軟件工程手段,減少不一致

2. 自動翻譯方案

(1) .已有方案的缺點

但這些思路都有各種缺點:

  • 所有在線請求的所有特征,這個存儲量數據量很大

  • 算法改代碼需要等待后臺開發,降低了算法同學的工作效率

  • 特征處理代碼的復雜度轉移到配置文件中,不一定能充分表達,而且配置格式增加學習成本

  • 就這邊真實離線特征處理代碼來看,大部分代碼都無法抽取出公共代碼做復用。

(2). 翻譯器

回到問題出發點考慮,顯而易見,這個問題歸根結底就是需要一個 “ python 到 c++ 的翻譯器 ” 。

那其實 “翻譯器 Transpiler ” ,和編譯器解釋器類似,也是個古老的熱門話題了,比如 WebAssembly , CoffeeScript , Babel ,

Google Closure Compiler , f2c

于是一番搜索,發現 python 到 C++ 的翻譯器也不少,其中 Pythran 是新興比較熱門的開源項目。

于是一番嘗試后,借助 pythran,我們實現了:

  • 一條命令 全自動把 Python 翻譯成等價 C++

  • 嚴格等價保證改寫,徹底消除不一致

  • 完全去掉重新實現這塊工作量,后臺開發成本降到 0 ,徹底解放生產力

  • 算法同學繼續使用純 python,開發效率無影響,** 無學習成本 **

  • 并能推廣到其他需要 python 改寫成后臺 C++ 代碼 的業務場景,解放生產力

三、pythran 的使用流程

(1). 安裝

一條命令安裝:

  1. pip3 install pythran 

(2). 寫 Python 代碼

下面這個 python demo,是 pythran 官方 demo。

  1. import math 
  2. import numpy as np 
  3.  
  4. def zero(n, m): 
  5.     return [[0]*n for col in range(m)] 
  6.  
  7. #pythran export matrix_multiply(float list list, float list list) 
  8. def matrix_multiply(m0, m1): 
  9.     new_matrix = zero(len(m0),len(m1[0])) 
  10.     for i in range(len(m0)): 
  11.         for j in range(len(m1[0])): 
  12.             for k in range(len(m1)): 
  13.                 new_matrix[i][j] += m0[i][k]*m1[k][j] 
  14.     return new_matrix 
  15.  
  16. #pythran export arc_distance(float[], float[], float[], float[]) 
  17. def arc_distance(theta_1, phi_1, theta_2, phi_2): 
  18.     """ 
  19.     Calculates the pairwise arc distance 
  20.     between all points in vector a and b. 
  21.     """ 
  22.     temp = (np.sin((theta_2-theta_1)/2)**2 
  23.            + np.cos(theta_1)*np.cos(theta_2) * np.sin((phi_2-phi_1)/2)**2
  24.     distance_matrix = 2 * np.arctan2(np.sqrt(temp), np.sqrt(1-temp)) 
  25.     return distance_matrix 
  26.  
  27.  
  28. #pythran export dprod(int list, int list) 
  29. def dprod(l0,l1): 
  30.     """WoW, generator expression, zip and sum.""" 
  31.     return sum(x * y for x, y in zip(l0, l1)) 
  32.  
  33.  
  34. #pythran export get_age(int ) 
  35. def get_age(age): 
  36.     if age <= 20
  37.         age_x = '0_20' 
  38.     elif age <= 25
  39.         age_x = '21_25' 
  40.     elif age <= 30
  41.         age_x = '26_30' 
  42.     elif age <= 35
  43.         age_x = '31_35' 
  44.     elif age <= 40
  45.         age_x = '36_40' 
  46.     elif age <= 45
  47.         age_x = '41_45' 
  48.     elif age <= 50
  49.         age_x = '46_50' 
  50.     else
  51.         age_x = '50+' 
  52.     return age_x 

(3). Python 轉成 C++

一條命令完成翻譯:

  1. pythran -e demo.py -o  demo.hpp 

(4). 寫 C++ 代碼調用

pythran/pythonic/ 目錄下是 python 標準庫的 C++ 等價實現,翻譯出來的 C++ 代碼需要 include 這些頭文件。

寫個 C++ 代碼調用:

  1. #include "demo.hpp" 
  2. #include "pythonic/numpy/random/rand.hpp" 
  3. #include <iostream> 
  4.  
  5. using std::cout; 
  6. using std::endl; 
  7.  
  8. int main() { 
  9.   pythonic::types::list<pythonic::types::list<double>> m0 = {{2.0, 3.0}, 
  10.                                                              {4.0, 5.0}}, 
  11.                                                        m1 = {{1.0, 2.0}, 
  12.                                                              {3.0, 4.0}}; 
  13.   cout << m0 << "*" << m1 << "\n=\n" 
  14.        << __pythran_demo::matrix_multiply()(m0, m1) << endl 
  15.        << endl; 
  16.  
  17.   auto theta_1 = pythonic::numpy::random::rand(3), 
  18.        phi_1 = pythonic::numpy::random::rand(3), 
  19.        theta_2 = pythonic::numpy::random::rand(3), 
  20.        phi_2 = pythonic::numpy::random::rand(3); 
  21.   cout << "arc_distance " << theta_1 << "," << phi_1 << "," << theta_2 << "," 
  22.        << phi_2 << "\n=\n" 
  23.        << __pythran_demo::arc_distance()(theta_1, phi_1, theta_2, phi_2) << endl 
  24.        << endl; 
  25.  
  26.   pythonic::types::list<int> l0 = {2, 3}, l1 = {4, 5}; 
  27.   cout << "dprod " << l0 << "," << l1 << "\n=\n" 
  28.        << __pythran_demo::dprod()(l0, l1) << endl 
  29.        << endl; 
  30.  
  31.   cout << "get_age 30 = " << __pythran_demo::get_age()(30) << endl << endl; 
  32.  
  33.   return 0; 

(5). 編譯運行

  1. g++ -g -std=c++11 main.cpp -fopenmp -march=native -DUSE_XSIMD -I /usr/local/lib/python3.6/site-packages/pythran/ -o pythran_demo 
  2.  
  3. ./pythran_demo 

四、pythran 的功能與特性

(1). 介紹

按官方定義,Pythran 是一個 AOT (Ahead-Of-Time - 預先編譯) 編譯器。給科學計算的 python 加注解后,pythran 可以把 python 代碼變成接口相同的原生 python 模塊,大幅度提升性能。

并且 pythran 也可以利用 OpenMP 多核和 SIMD 指令集。

支持 python 3 和 Python 2.7 。

pythran 的 manual 挺詳細:

https://pythran.readthedocs.io/en/latest/MANUAL.html

(2). 功能

pythran 并不支持完整的 python, 只支持 python 語言特性的一個子集:

  • polymorphic functions 多態函數(翻譯成 C++ 的泛型模板函數)

  • lambda

  • list comprehension 列表推導式

  • map, reduce 等函數

  • dictionary, set, list 等數據結構

  • exceptions 異常

  • file handling 文件處理

  • 部分 numpy

不支持的功能:

  • classes 類

  • polymorphic variables 可變類型變量

(3). 支持的數據類型和函數

pythran export 可以導出函數和全局變量。

支持導出的數據類型,BNF 定義是:

  1. argument_type = basic_type 
  2.                 | (argument_type+)    # this is a tuple 
  3.                 | argument_type list    # this is a list 
  4.                 | argument_type set    # this is a set 
  5.                 | argument_type []+    # this is a ndarray, C-style 
  6.                 | argument_type [::]+    # this is a strided ndarray 
  7.                 | argument_type [:,...,:]+ # this is a ndarray, Cython style 
  8.                 | argument_type [:,...,3]+ # this is a ndarray, some dimension fixed 
  9.                 | argument_type:argument_type dict    # this is a dictionary 
  10.  
  11.   basic_type = bool | byte | int | float | str | None | slice 
  12.              | uint8 | uint16 | uint32 | uint64 | uintp 
  13.              | int8 | int16 | int32 | int64 | intp 
  14.              | float32 | float64 | float128 
  15.              | complex64 | complex128 | complex256 

可以看到基礎類型相當全面,支持各種 整數,浮點數,字符串,復數

復合類型支持 tuple, list, set, dict, numpy.ndarray 等,對應 C++ 代碼的類型實現在 pythran/pythonic/include/types/ 下面,可以看到比如 dict 實際就是封裝了一下 std::unordered_map

https://pythran.readthedocs.io/en/latest/SUPPORT.html

可以看到支持的 python 基礎庫,其中常用于機器學習的 numpy 支持算比較完善。

五、pythran 的基本原理

和常見的編譯器/解釋器類似, pythran 的架構是分成 3 層:

  1. python 代碼解析成抽象語法樹 AST 。用 python 標準庫自帶的的 ast 模塊實現

  2. 代碼優化。

    在 AST 上做優化,有多種 transformation pass,比如 deadcode_elimination 死代碼消除,loop_full_unrolling 循環展開 等。還有 Function/Module/Node 級別的 Analysis,用來遍歷 AST 供 transformation 利用。

  3. 后端,實現代碼生成。目前有 2 個后端,Cxx / Python, Cxx 后端可以把 AST 轉成 C++ 代碼( Python 后端用來調試)。

目前看起來 ,pythran 還欠缺的:

  1. 字符串處理能力欠缺,缺少 str.encode()/str.decode() 對 utf8 的支持

  2. 缺少正則表達式 regex 支持

看文檔要自己加也不麻煩,看業務需要可以加。

 

責任編輯:張燕妮 來源: 騰訊技術工程
相關推薦

2020-04-21 08:30:32

AI人工智能語言

2019-05-24 16:20:11

Python 開發編程語言

2017-07-11 09:46:00

防火墻翻譯安全

2020-07-20 17:36:31

英語翻譯開源工具開源

2018-12-06 14:41:04

Python GitHub編程語言

2020-11-16 13:38:31

PostMessage

2021-09-05 07:55:37

前端Emoji 表情

2021-10-29 07:49:22

Spring事務管理

2021-07-28 06:10:47

拖拽設計器 transmat

2021-08-12 16:30:45

OpenAI人工智能自然語言翻譯

2012-07-13 11:32:16

網絡出口

2022-08-12 08:25:33

Python異常信息代碼

2020-09-14 11:26:54

BinlogCanal數據庫

2024-08-02 08:38:20

Controller接口地址

2013-12-06 11:14:54

開發者程序員bug

2016-11-08 18:53:08

編譯器

2021-02-20 09:50:41

谷歌Android開發者

2024-12-17 12:00:00

C++對象模型

2012-02-01 08:59:01

Dart

2020-11-04 08:37:37

C語言C++內存
點贊
收藏

51CTO技術棧公眾號

一本一本久久a久久精品综合小说| 性一交一乱一区二区洋洋av| 欧美日韩精品一区视频| 亚洲一区二区自拍偷拍| 久久久国产精品成人免费| 欧美影院天天5g天天爽| 欧美日韩国产在线播放| 欧美高清视频一区| 91精品人妻一区二区三区果冻| 欧美丝袜激情| 色婷婷综合中文久久一本| 日本一区免费在线观看| 国产男人搡女人免费视频| 久久高清免费| 午夜激情综合网| 欧洲国产精品| 精品人妻一区二区三区蜜桃| 亚洲少妇一区| 日韩视频在线一区| 日日夜夜精品视频免费观看 | 国产精品久久久久久模特| 亚洲精品视频播放| 成人三级视频在线播放| jizz性欧美| 972aa.com艺术欧美| 国产精品福利网站| 男的操女的网站| 香蕉久久夜色精品国产更新时间| 欧美日高清视频| 久激情内射婷内射蜜桃| 你懂的视频在线免费| 国产专区综合网| 欧美怡春院一区二区三区| 潘金莲一级黄色片| eeuss鲁片一区二区三区| 在线观看视频一区| 色播五月综合| 天天插天天干天天操| 免费成人在线网站| 韩国三级日本三级少妇99| 情侣偷拍对白清晰饥渴难耐| 精品少妇一区| 日韩午夜激情av| 国产精品69页| 变态调教一区二区三区| 日本一区二区成人| 蜜桃视频在线观看91| www.av在线.com| 奇米精品一区二区三区在线观看一| 欧美极品美女视频网站在线观看免费 | 伊人久久久久久久久久| 天天久久综合网| 国产精品亚洲d| 日韩欧美国产网站| 国产日韩第一页| 日本在线人成| 国产女同互慰高潮91漫画| 国产在线精品播放| 波多野结衣在线电影| 国产欧美短视频| 久久久av网站| 手机免费观看av| 不卡中文字幕| 亚洲高清不卡av| 日韩av在线中文| 国产成人精品123区免费视频| 偷拍一区二区三区四区| 性一交一乱一伧国产女士spa| 日本黄色片在线观看| 欧美国产亚洲另类动漫| 欧美另类高清视频在线| 天堂中文在线看| 国产精品一级片在线观看| 96国产粉嫩美女| 免费看av在线| 麻豆久久久久久久| 成人免费淫片视频软件| 91精品国产乱码久久| 久久激情视频| 97香蕉久久超级碰碰高清版| 日韩欧美高清在线观看| 99在线|亚洲一区二区| 久久久久久国产精品三级玉女聊斋| 99久久99久久精品国产| 精品久久国产| 亚洲天堂色网站| 国产又粗又黄又猛| 婷婷综合久久| 欧美高清无遮挡| 久久久久无码国产精品| 国内精品久久久久久久影视麻豆 | 精品久久久久久久久久久久久久久久| 午夜一区二区三区不卡视频| 日韩av成人在线观看| 中文字幕在线观看视频免费| 裸体素人女欧美日韩| 欧美在线不卡区| 亚洲国产成人精品女人久久| 日韩国产欧美在线播放| 国产精品无av码在线观看| 国产一区二区三区在线观看| 韩国v欧美v日本v亚洲v| 国产日韩精品一区观看| 欧美色综合一区二区三区| 久久免费偷拍视频| 中文字幕在线中文字幕日亚韩一区| 99热国产在线| 国产精品99久久久久久久女警| 国产二区不卡| 五月婷婷在线观看| 精品国产精品自拍| 无套白嫩进入乌克兰美女| 精品久久ai电影| 蜜臀久久99精品久久久无需会员| 日本少妇做爰全过程毛片| 久久99国产精品久久99| 欧美日韩精品久久| 波多野结衣中文字幕久久| 欧美人体做爰大胆视频| 69视频在线观看免费| 综合久久综合| 国产精品丝袜高跟| 欧美日韩国产亚洲沙发| 亚洲一区二区四区蜜桃| 亚洲无在线观看| 国产一区二区三区四区五区传媒 | 久久精品aaaaaa毛片| 免费在线观看黄| 婷婷一区二区三区| 黄色片子免费看| 91综合在线| 国产成人精品在线视频| 人妻无码中文字幕免费视频蜜桃| 亚洲欧美综合色| 亚洲中文字幕无码专区| av动漫精品一区二区| 久久国产精品影视| 国产亲伦免费视频播放| ...中文天堂在线一区| 亚洲精品www.| 欧美一区二区性| 国产精品免费久久久久影院| 天堂影院在线| 亚洲成人激情av| 91精品国产高清91久久久久久 | 中文字幕在线一区二区三区| 国产成人精品无码播放| 思热99re视热频这里只精品| 久久久久免费视频| а√天堂资源在线| 亚洲视频精选在线| 亚洲精品免费一区亚洲精品免费精品一区| 蜜桃国内精品久久久久软件9| 欧美亚洲伦理www| 欧美拍拍视频| 日本韩国欧美在线| 超碰人人人人人人人| 欧美亚洲视频| 日韩精品福利视频| 成人影院在线免费观看| 一区二区三区视频免费| 一区二区日韩视频| 国产精品成人一区二区艾草| 潘金莲激情呻吟欲求不满视频| 久久免费大视频| 国产一区私人高清影院| 成人短视频在线| 精品久久久影院| 日韩毛片在线播放| 久久久久久免费毛片精品| 亚洲少妇久久久| 天天揉久久久久亚洲精品| 97自拍视频| 范冰冰一级做a爰片久久毛片| 亚洲欧美一区二区激情| 午夜一级黄色片| 夜夜揉揉日日人人青青一国产精品 | 免费精品在线视频| 国产91丝袜在线播放九色| 91丨porny丨探花| 欧美三级伦理在线| 国产视频观看一区| sm性调教片在线观看| 亚洲一级片在线看| 国产视频手机在线观看| 精品久久久久久中文字幕大豆网| 免费黄色在线网址| 国产麻豆成人精品| 国产1区2区在线| 一区二区免费不卡在线| 久久av一区二区三区亚洲| 99久久er| 亚洲**2019国产| 久热国产在线| 亚洲欧美一区二区三区四区| 97人妻精品一区二区三区视频 | 911亚洲精品| 国产成人高清激情视频在线观看 | 2019中文字幕免费视频| 91在线播放网站| 日韩成人性视频| 99久久精品无免国产免费| 欧美视频第一页| 成人做爰69片免网站| 国产成人av电影在线观看| 日本爱爱免费视频| 亚洲一区二区动漫| 日本女人高潮视频| 精品免费av| 国内视频一区| 奇米一区二区| 国产精品色午夜在线观看| 欧美大片黄色| 久久久久北条麻妃免费看| 国产在线观看网站| 亚洲国产又黄又爽女人高潮的| 一级特黄色大片| 色综合欧美在线| 日本黄色片视频| 91老师国产黑色丝袜在线| 极品人妻一区二区| 久久黄色级2电影| 久久午夜夜伦鲁鲁一区二区| 国产日韩综合| 精品少妇人欧美激情在线观看| 中国精品18videos性欧美| 神马影院我不卡午夜| 日韩深夜影院| 精品国产一区二区三区四区精华| 中文在线综合| 亚洲一区二区在线| 国产精品18| 国产精品极品尤物在线观看| 成人影院大全| 国产成人精品久久久| 在线天堂新版最新版在线8| 国内精品久久久久久久久| 婷婷色在线资源| 久久精品99国产精品酒店日本| yw193.com尤物在线| 亚洲日本成人网| 男人天堂综合网| 亚洲国产成人精品女人久久久 | 久久午夜无码鲁丝片| 亚洲欧美视频在线观看视频| 四虎影院中文字幕| 91麻豆123| 亚洲精品视频三区| 国产精品亚洲一区二区三区妖精 | 国产一区二区三区亚洲综合| 国产在线视频欧美| 婷婷丁香久久| 亚洲一区二区中文| 999久久精品| 激情小说网站亚洲综合网| 日本中文字幕在线一区| 欧美日韩国产综合视频在线| 国产尤物久久久| 在线成人性视频| 欧美黄色免费| 国产av天堂无码一区二区三区| 亚洲视频成人| 亚洲一级片免费| 国产一区二区久久| 中文写幕一区二区三区免费观成熟| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩一区二区三区电影| 丰满人妻av一区二区三区| 亚洲精品97久久| 欧美日韩国产中文字幕在线| 色先锋资源久久综合5566| 国产在线看片| 97色在线视频观看| 97久久香蕉国产线看观看| 国产精品日日做人人爱| 在线国产成人影院| 91日本在线观看| 免费成人三级| 久久精品一区四区| 欧美久久婷婷综合色| 无码人妻aⅴ一区二区三区有奶水| 成人欧美一区二区三区小说| 久久免费视频播放| 欧美性xxxxx| 日本丰满少妇做爰爽爽| 91精品国产一区二区三区蜜臀| 亚洲乱码精品久久久久.. | 国产欧美日韩视频| caoporn成人| 五月天综合网| 综合激情网站| 日本精品www| 毛片一区二区三区| 黄色免费视频网站| 国产视频一区二区在线观看| 丰满少妇被猛烈进入一区二区| 午夜精品福利在线| 中文字幕av影院| 欧美一区二区三区视频免费播放| 日本私人网站在线观看| 最近中文字幕日韩精品| dj大片免费在线观看| 久久这里只有精品视频首页| 电影网一区二区| 国产一级精品aaaaa看| av亚洲免费| www在线观看免费| 国产伦精品一区二区三区视频青涩| 魔女鞋交玉足榨精调教| 亚洲自拍偷拍综合| 在线观看国产区| 亚洲女人天堂网| 日本aa在线| 国产精品91视频| 欧美激情网址| 在线丝袜欧美日韩制服| 欧美亚洲免费| 超碰97在线资源站| 亚洲精品视频一区二区| 在线观看国产一区二区三区| 精品蜜桃在线看| 影音先锋男人资源在线| 91极品女神在线| 美腿丝袜亚洲图片| 欧美视频在线第一页| 国产剧情在线观看一区二区| 亚洲精品视频网址| 91黄色小视频| 你懂的视频在线播放| 久久免费国产视频| 日日夜夜综合| 亚洲在线不卡| 丝袜a∨在线一区二区三区不卡| av无码一区二区三区| |精品福利一区二区三区| 91好色先生tv| 久久精品中文字幕免费mv| 日韩一区二区三区在线免费观看| 国产不卡一区二区在线观看 | 国产日产精品一区| 在线视频一区二区三区四区| 亚洲美女在线看| 黄色免费网站在线观看| 91老司机在线| 一区二区三区国产精华| 国产大学生av| 成人综合网站| 精品视频久久久久久久| 国产专区在线| 国产做受高潮69| 色老板在线视频一区二区| 美女黄色免费看| 国产福利电影一区二区三区| 久久国产精品二区| 精品国产第一区二区三区观看体验| 制服丝袜中文字幕在线| 91精品网站| 激情av一区| 97人妻精品一区二区三区免| 一本一道久久a久久精品| 国产青青草在线| 91精品国产综合久久久久久蜜臀 | 在线视频不卡一区二区| 国产麻豆精品95视频| 国产真人真事毛片| 国产婷婷97碰碰久久人人蜜臀| 久久久人成影片一区二区三区在哪下载 | 国产免费一区二区三区最新不卡| 麻豆乱码国产一区二区三区| 国产一区二区三区| 性欧美大战久久久久久久| 国产视频一区在线观看| 国产喷水福利在线视频| 国产片在线播放| 欧美无砖专区一中文字| 欧美激情办公室videoshd| 欧美视频一区二区| 番号集在线观看| 91手机在线视频| 欧美在线观看天堂一区二区三区| 一级少妇精品久久久久久久| 亚洲尤物在线视频观看| 精品国产伦一区二区三区| 91sa在线看| 红杏视频成人| jizz欧美性11| 亚洲国产中文字幕在线视频综合| 天天操天天射天天| 国产精品久久久久久久午夜| 欧美日韩亚洲一区| 日韩人妻一区二区三区| 欧美日韩在线免费视频| 老色鬼在线视频| 在线看无码的免费网站| 97精品国产露脸对白| 一区二区三区精彩视频| 91成品人片a无限观看| 国产精品嫩模av在线| 99视频在线免费| 一级日本不卡的影视|