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

當 Mars 遇上 RAPIDS:用 GPU 加速數據科學

開發 開發工具 商務辦公
在數據科學世界,Python 是一個不可忽視的存在,且有愈演愈烈之勢。而其中主要的使用工具,包括 Numpy、Pandas 和 Scikit-learn 等。

在數據科學世界,Python 是一個不可忽視的存在,且有愈演愈烈之勢。而其中主要的使用工具,包括 Numpy、Pandas 和 Scikit-learn 等。 Mars 在 MaxCompute 團隊內部誕生,本文將分享如何通過 Mars 讓 Numpy、pandas 和 scikit-learn 等數據科學的庫能夠并行和分布式執行,并和 RAPIDS 平臺結合用 GPU 來加速數據科學。

Numpy

Numpy 是數值計算的基礎包,內部提供了多維數組(ndarray)這樣一個數據結構,用戶可以很方便地在任意維度上進行數值計算。

??

??

 

我們舉一個蒙特卡洛方法求解 Pi 的例子。這背后的原理非常簡單,現在我們有個半徑為1的圓和邊長為2的正方形,他們的中心都在原點。現在我們生成大量的均勻分布的點,讓這些點落在正方形內,通過簡單的推導,我們就可以知道,Pi 的值 = 落在圓內的點的個數 / 點的總數 * 4。

這里要注意,就是隨機生成的點的個數越多,結果越精確。

用 Numpy 實現如下:

import numpy as np 

N = 10 ** 7 # 1千萬個點

data = np.random.uniform(-1, 1, size=(N, 2)) # 生成1千萬個x軸和y軸都介于-1和1間的點
inside = (np.sqrt((data ** 2).sum(axis=1)) < 1).sum() # 計算到原點的距離小于1的點的個數
pi = 4 * inside / N
print('pi: %.5f' % pi)

可以看到,用 Numpy 來進行數值計算非常簡單,只要寥寥數行代碼,而如果讀者習慣了 Numpy 這種面相數組的思維方式之后,無論是代碼的可讀性還是執行效率都會有巨大提升。

pandas

pandas 是一個強大的數據分析和處理的工具,它其中包含了海量的 API 來幫助用戶在二維數據(DataFrame)上進行分析和處理。

pandas 中的一個核心數據結構就是 DataFrame,它可以簡單理解成表數據,但不同的是,它在行和列上都包含索引(Index),要注意這里不同于數據庫的索引的概念,它的索引可以這么理解:當從行看 DataFrame 時,我們可以把 DataFrame 看成行索引到行數據的這么一個字典,通過行索引,可以很方便地選中一行數據;列也同理。

我們拿 movielens 的數據集 作為簡單的例子,來看 pandas 是如何使用的。這里我們用的是 Movielens 20M Dataset.

import pandas as pd 

ratings = pd.read_csv('ml-20m/ratings.csv')
ratings.groupby('userId').agg({'rating': ['sum', 'mean', 'max', 'min']})

通過一行簡單的 pandas.read_csv 就可以讀取 CSV 數據,接著按 userId 做分組聚合,求 rating 這列在每組的總和、平均、最大、最小值。

“食用“ pandas 的最佳方式,還是在 Jupyter notebook 里,以交互式的方式來分析數據,這種體驗會讓你不由感嘆:人生苦短,我用 xx(??)

scikit-learn

scikit-learn 是一個 Python 機器學習包,提供了大量機器學習算法,用戶不需要知道算法的細節,只要通過幾個簡單的 high-level 接口就可以完成機器學習任務。當然現在很多算法都使用深度學習,但 scikit-learn 依然能作為基礎機器學習庫來串聯整個流程。

我們以 K-最鄰近算法為例,來看看用 scikit-learn 如何完成這個任務。

import pandas as pd 
from sklearn.neighbors import NearestNeighbors

df = pd.read_csv('data.csv') # 輸入是 CSV 文件,包含 20萬個向量,每個向量10個元素
nn = NearestNeighbors(n_neighbors=10)
nn.fit(df)
neighbors = nn.kneighbors(df)

fit 接口就是 scikit-learn 里最常用的用來學習的接口。可以看到整個過程非常簡單易懂。

Mars —— Numpy、pandas 和 scikit-learn 的并行和分布式加速器

Python 數據科學棧非常強大,但它們有如下幾個問題:

  • 現在是多核時代,這幾個庫里鮮有操作能利用得上多核的能力。
  • 隨著深度學習的流行,用來加速數據科學的新的硬件層出不窮,這其中最常見的就是 GPU,在深度學習前序流程中進行數據處理,我們是不是也能用上 GPU 來加速呢?
  • 這幾個庫的操作都是命令式的(imperative),和命令式相對應的就是聲明式(declarative)。命令式的更關心 how to do,每一個操作都會立即得到結果,方便對結果進行探索,優點是很靈活;缺點則是中間過程可能占用大量內存,不能及時釋放,而且每個操作之間就被割裂了,沒有辦法做算子融合來提升性能;那相對應的聲明式就剛好相反,它更關心 what to do,它只關心結果是什么,中間怎么做并沒有這么關心,典型的聲明式像 SQL、TensorFlow 1.x,聲明式可以等用戶真正需要結果的時候才去執行,也就是 lazy evaluation,這中間過程就可以做大量的優化,因此性能上也會有更好的表現,缺點自然也就是命令式的優點,它不夠靈活,調試起來比較困難。

為了解決這幾個問題,Mars 被我們開發出來,Mars 在 MaxCompute 團隊內部誕生,它的主要目標就是讓 Numpy、pandas 和 scikit-learn 等數據科學的庫能夠并行和分布式執行,充分利用多核和新的硬件。

Mars 的開發過程中,我們核心關注的幾點包括:

  • 我們希望 Mars 足夠簡單,只要會用 Numpy、pandas 或 scikit-learn 就會用 Mars。
  • 避免重復造輪子,我們希望能利用到這些庫已有的成果,只需要能讓他們被調度到多核/多機上即可。
  • 聲明式和命令式兼得,用戶可以在這兩者之間自由選擇,靈活度和性能兼而有之。
  • 足夠健壯,生產可用,能應付各種 failover 的情況。

當然這些是我們的目標,也是我們一直努力的方向。

Mars tensor:Numpy 的并行和分布式加速器

上面說過,我們的目標之一是,只要會用 Numpy 等數據科學包,就會用 Mars。我們直接來看代碼,還是以蒙特卡洛為例。變成 Mars 的代碼是什么樣子呢?

import mars.tensor as mt 

N = 10 ** 10

data = mt.random.uniform(-1, 1, size=(N, 2))
inside = (mt.sqrt((data ** 2).sum(axis=1)) < 1).sum()
pi = (4 * inside / N).execute()
print('pi: %.5f' % pi)

可以看到,區別就只有兩處:import numpy as np 變成 import mars.tensor as mt ,后續的 np. 都變成 mt. ;pi 在打印之前調用了一下 .execute() 方法。

也就是默認情況下,Mars 會按照聲明式的方式,代碼本身移植的代價極低,而在真正需要一個數據的時候,通過 .execute() 去觸發執行。這樣能最大限度得優化性能,以及減少中間過程內存消耗。

這里,我們還將數據的規模擴大了 1000 倍,來到了 100 億個點。之前 1/1000 的數據量的時候,在我的筆記本上需要 757ms;而現在數據擴大一千倍,光 data 就需要 150G 的內存,這用 Numpy 本身根本無法完成。而使用 Mars,計算時間只需要 3min 44s,而峰值內存只需要 1G 左右。假設我們認為內存無限大,Numpy 需要的時間也就是之前的 1000 倍,大概是 12min 多,可以看到 Mars 充分利用了多核的能力,并且通過聲明式的方式,極大減少了中間內存占用。

前面說到,我們試圖讓聲明式和命令式兼得,而使用命令式的風格,只需要在代碼的開始配置一個選項即可。

import mars.tensor as mt 
from mars.config import options

options.eager_mode = True # 打開 eager mode 后,每一次調用都會立即執行,行為和 Numpy 就完全一致

N = 10 ** 7

data = mt.random.uniform(-1, 1, size=(N, 2))
inside = (mt.linalg.norm(data, axis=1) < 1).sum()
pi = 4 * inside / N # 不需要調用 .execute() 了
print('pi: %.5f' % pi.fetch()) # 目前需要 fetch() 來轉成 float 類型,后續我們會加入自動轉換

Mars DataFrame:pandas 的并行和分布式加速器

看過怎么樣輕松把 Numpy 代碼遷移到 Mars tensor ,想必讀者也知道怎么遷移 pandas 代碼了,同樣也只有兩個區別。我們還是以 movielens 的代碼為例。

import mars.dataframe as md 

ratings = md.read_csv('ml-20m/ratings.csv')
ratings.groupby('userId').agg({'rating': ['sum', 'mean', 'max', 'min']}).execute()

Mars Learn:scikit-learn 的并行和分布式加速器

Mars Learn 也同理,這里就不做過多闡述了。但目前 Mars learn 支持的 scikit-learn 算法還不多,我們也在努力移植的過程中,這需要大量的人力和時間,歡迎感興趣的同學一起參與。

import mars.dataframe as md 
from mars.learn.neighbors import NearestNeighbors

df = md.read_csv('data.csv') # 輸入是 CSV 文件,包含 20萬個向量,每個向量10個元素
nn = NearestNeighbors(n_neighbors=10)
nn.fit(df) # 這里 fit 的時候也會整體觸發執行,因此機器學習的高層接口都是立即執行的
neighbors = nn.kneighbors(df).fetch() # kneighbors 也已經觸發執行,只需要 fetch 數據

這里要注意的是,對于機器學習的 fit、predict 等高層接口,Mars Learn 也會立即觸發執行,以保證語義的正確性。

RAPIDS:GPU 上的數據科學

相信細心的觀眾已經發現,GPU 好像沒有被提到。不要著急,這就要說到 RAPIDS。

在之前,雖然 CUDA 已經將 GPU 編程的門檻降到相當低的一個程度了,但對于數據科學家們來說,在 GPU 上處理 Numpy、pandas 等能處理的數據無異于天方夜譚。幸運的是,NVIDIA 開源了 RAPIDS 數據科學平臺,它和 Mars 的部分思想高度一致,即使用簡單的 import 替換,就可以將 Numpy、pandas 和 scikit-learn 的代碼移植到 GPU 上。

??

??

 

其中,RAPIDS cuDF 用來加速 pandas,而 RAPIDS cuML 用來加速 scikit-learn。

對于 Numpy 來說,CuPy 已經很好地支持用 GPU 來加速了,這樣 RAPIDS 也得以把重心放在數據科學的其他部分。

CuPy:用 GPU 加速 Numpy

還是蒙特卡洛求解 Pi。

import cupy as cp 

N = 10 ** 7

data = cp.random.uniform(-1, 1, size=(N, 2))
inside = (cp.sqrt((data ** 2).sum(axis=1)) < 1).sum()
pi = 4 * inside / N
print('pi: %.5f' % pi)

在我的測試中,它將 CPU 的 757ms,降到只有 36ms,提升超過 20 倍,可以說效果非常顯著。這正是得益于 GPU 非常適合計算密集型的任務。

RAPIDS cuDF:用 GPU 加速 pandas

將 import pandas as pd 替換成 import cudf,GPU 內部如何并行,CUDA 編程這些概念,用戶都不再需要關心。

import cudf 

ratings = cudf.read_csv('ml-20m/ratings.csv')
ratings.groupby('userId').agg({'rating': ['sum', 'mean', 'max', 'min']})

運行時間從 CPU 上的 18s 提升到 GPU 上的 1.66s,提升超過 10 倍。

RAPIDS cuML:用 GPU 加速 scikit-learn

同樣是 k-最鄰近問題。

import cudf 
from cuml.neighbors import NearestNeighbors

df = cudf.read_csv('data.csv')
nn = NearestNeighbors(n_neighbors=10)
nn.fit(df)
neighbors = nn.kneighbors(df)

運行時間從 CPU 上 1min52s,提升到 GPU 上 17.8s。

Mars 和 RAPIDS 結合能帶來什么?

RAPIDS 將 Python 數據科學帶到了 GPU,極大地提升了數據科學的運行效率。它們和 Numpy 等一樣,是命令式的。通過和 Mars 結合,中間過程將會使用更少的內存,這使得數據處理量更大;Mars 也可以將計算分散到多機多卡,以提升數據規模和計算效率。

在 Mars 里使用 GPU 也很簡單,只需要在對應函數上指定 gpu=True。例如創建 tensor、讀取 CSV 文件等都適用。

import mars.tensor as mt 
import mars.dataframe as md

a = mt.random.uniform(-1, 1, size=(1000, 1000), gpu=True)
df = md.read_csv('ml-20m/ratings.csv', gpu=True)

下圖是用 Mars 分別在 Scale up 和 Scale out 兩個維度上加速蒙特卡洛計算 Pi 這個任務。一般來說,我們要加速一個數據科學任務,可以有這兩種方式,Scale up 是指可以使用更好的硬件,比如用更好的 CPU、更大的內存、使用 GPU 替代 CPU等;Scale out 就是指用更多的機器,用分布式的方式提升效率。

??

??

 

可以看到在一臺 24 核的機器上,Mars 計算需要 25.8s,而通過分布式的方式,使用 4 臺 24 核的機器的機器幾乎以線性的時間提升。而通過使用一個 NVIDIA TESLA V100 顯卡,我們就能將單機的運行時間提升到 3.98s,這已經超越了4臺 CPU 機器的性能。通過再將單卡拓展到多卡,時間進一步降低,但這里也可以看到,時間上很難再線性擴展了,這是因為 GPU 的運行速度提升巨大,這個時候網絡、數據拷貝等的開銷就變得明顯。

性能測試

我們使用了 https://github.com/h2oai/db-benchmark 的數據集,測試了三個數據規模的 groupby 和 一個數據規模的 join。而我們主要對比了 pandas 和 DASK。DASK 和 Mars 的初衷很類似,也是試圖并行和分布式化 Python 數據科學,但它們的設計、實現、分布式都存在較多差異,這個后續我們再撰文進行詳細對比。

測試機器配置是 500G 內存、96 核、NVIDIA V100 顯卡。Mars 和 DASK 在 GPU 上都使用 RAPIDS 執行計算。

Groupby

數據有三個規模,分別是 500M、5G 和 20G。

查詢也有三組。

查詢一:

df = read_csv('data.csv') 
df.groupby('id1').agg({'v1': 'sum'})

查詢二:

df = read_csv('data.csv') 
df.groupby(['id1', 'id2']).agg({'v1': 'sum'})

查詢三:

df = read_csv('data.csv') 
df.gropuby(['id6']).agg({'v1': 'sum', 'v2': 'sum', 'v3': 'sum'})

??

??

??

??

 

 


 

??

??

數據大小到 20G 時,pandas 在查詢2會內存溢出,得不出結果。

可以看到,隨著數據增加,Mars 的性能優勢會愈發明顯。

得益于 GPU 的計算能力,GPU 運算性能相比于 CPU 都有數倍的提升。如果單純使用 RAPIDS cuDF,由于顯存大小的限制,數據來到 5G 都難以完成,而由于 Mars 的聲明式的特點,中間過程對顯存的使用大幅得到優化,所以整組測試來到 20G 都能輕松完成。這正是 Mars + RAPIDS 所能發揮的威力。

Join

測試查詢:

x = read_csv('x.csv') 
y = read_csv('y.csv')
x.merge(y, on='id1')

測試數據 x 為 500M,y 包含 10 行數據。

??

??

 

總結

RAPIDS 將 Python 數據科學帶到了 GPU,極大提升了數據分析和處理的效率。Mars 的注意力更多放在并行和分布式。相信這兩者的結合,在未來會有更多的想象空間。

【本文為51CTO專欄作者“阿里巴巴官方技術”原創稿件,轉載請聯系原作者】

??戳這里,看該作者更多好文??

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2019-08-07 18:52:40

GPU數據科學CPU

2015-01-07 15:49:21

大數據SSD

2013-08-22 11:08:27

大數據商業只能Hadoop

2013-11-08 09:15:32

大數據平板電腦

2013-05-22 09:33:09

交互設計設計時間

2016-10-21 15:57:39

Rust編輯語言Fedora

2022-02-24 16:15:16

OpenHarmon鴻蒙OpenEuler

2018-06-06 15:00:27

開源大數據大數據項目

2012-02-16 10:04:07

數據中心云計算

2011-09-14 09:44:06

數據中心以太網數據中心網絡

2017-08-18 14:47:31

DDD微服務架構

2025-09-04 07:52:16

2017-06-28 11:34:55

銳捷 醫療 物聯網

2019-08-06 17:19:22

開源技術 趨勢

2011-03-16 14:51:35

2022-06-27 13:56:10

設計模式緩存分布式系統

2017-09-11 13:55:30

前端JavaScript物聯網

2016-10-21 09:45:20

RustFedoraJava

2009-03-21 16:43:29

SOA虛擬化IT

2025-08-07 08:35:06

點贊
收藏

51CTO技術棧公眾號

亚洲色婷婷久久精品av蜜桃| 国产久一一精品| 男人女人拔萝卜视频| 色呦呦网站在线观看| 黄色影院在线看| 美女高潮在线观看| 国产区在线观看成人精品| 国产免费亚洲高清| 久久高清免费视频| 成人婷婷网色偷偷亚洲男人的天堂| 欧美高清hd18日本| 欧美网站免费观看| 草莓福利社区在线| 久久久国产午夜精品| 亚洲中国色老太| 一级片在线观看免费| 久久久五月天| 亚洲图片欧美日产| 中文字幕18页| 日韩av黄色| 欧美午夜激情视频| 成年人视频大全| chinese偷拍一区二区三区| 国产成人午夜视频| 国产精品亚洲自拍| 亚洲GV成人无码久久精品| 伊人情人综合网| 中文字幕国产亚洲2019| 亚洲精品乱码久久久久久不卡| 日韩精品第二页| 日本韩国欧美一区| 亚洲熟妇国产熟妇肥婆| 深夜国产在线播放| 国产精品白丝在线| 四虎永久在线精品免费一区二区| 免费观看黄色av| 国产精品中文字幕欧美| 国产精品美女久久久久av超清| 日本熟女一区二区| 红桃视频欧美| 欧美国产第一页| 激情小说中文字幕| 一本一本久久a久久综合精品| 亚洲欧洲美洲在线综合| 国产精品久久不卡| 你懂的在线观看一区二区| 欧美不卡123| 男插女视频网站| 成人网av.com/| 欧美美女直播网站| 天天干天天爽天天射| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲va天堂va国产va久| 日韩精品一区二区免费| 最新国产在线拍揄自揄视频| 亚洲日本va午夜在线影院| 中文字幕中文字幕在线中一区高清| 国产精品久久久久一区二区国产 | 男人添女人下面免费视频| 日韩欧美一区二区三区在线观看| 色婷婷综合久久久久中文一区二区| 日韩免费视频播放| 高清不卡亚洲| 欧美三区免费完整视频在线观看| 中文久久久久久| 欧美亚洲黄色| 日韩午夜中文字幕| 成人免费看片载| 羞羞答答一区二区| 一本色道久久综合狠狠躁篇的优点 | 一级欧美视频| 日韩欧美卡一卡二| 在线观看免费视频黄| 欧美日韩精品一区二区三区在线观看| 日韩福利在线播放| 91无套直看片红桃在线观看| 91欧美日韩| 欧美激情第1页| 日日夜夜狠狠操| 老司机午夜精品| 99在线首页视频| 日韩毛片在线一区二区毛片| 久久久99久久精品欧美| 国产系列第一页| 成人福利影视| 欧美色精品在线视频| 亚洲一二三av| 欧美影院天天5g天天爽| 日韩在线观看免费网站| 精品午夜福利视频| 免费成人av在线播放| 18成人在线| 免费成人av电影| 亚洲欧美日韩一区二区三区在线观看| 欧美极品少妇无套实战| 亚洲www免费| 欧美一区二区免费观在线| 日本丰满少妇裸体自慰| 欧美韩国日本在线观看| 欧美高清激情视频| 波多野结衣绝顶大高潮| 国产99一区视频免费| 日本黄网免费一区二区精品| 手机在线免费av| 欧美在线一区二区| 欧美xxxx×黑人性爽| 日韩久久精品| 国内揄拍国内精品少妇国语| 在线观看毛片网站| 26uuu亚洲| a级黄色片免费| 精品美女一区| 亚洲欧洲第一视频| 日韩欧美a级片| 国产精品一区2区| 亚洲一区二区三区乱码| 中文在线а√在线8| 日韩欧美一级精品久久| 日韩在线视频免费看| 久久亚洲影院| 国内精品二区| 国产丝袜在线观看视频| 欧美一区二区三区不卡| 亚洲色图27p| 日韩不卡一区二区三区| 精品一区二区三区日本| 好久没做在线观看| 91精品国产欧美一区二区18| xxxxx99| 日韩中文字幕一区二区三区| 久久96国产精品久久99软件| 波多野结衣中文字幕久久| 欧美一区二区私人影院日本| 东京热无码av男人的天堂| 久久免费黄色| 欧美日韩天天操| 在线最新版中文在线| 亚洲激情第一页| 国产在线视频二区| 国产成人亚洲综合a∨猫咪| 欧美日韩视频免费在线观看| 欧美视频第一| 日韩一级裸体免费视频| 怡红院男人天堂| 国产欧美日韩精品一区| 在线观看高清免费视频| 精品日韩一区| 国产精品视频久久久久| 丝袜美腿美女被狂躁在线观看| 欧美综合色免费| 一级片黄色录像| 国内精品自线一区二区三区视频| 正在播放91九色| 国产精品免费精品自在线观看| 久久人体大胆视频| 国内毛片毛片毛片毛片| 亚洲综合久久久| 黄色免费看视频| 国产模特精品视频久久久久| 蜜桃久久影院| 九色成人搞黄网站| www.欧美三级电影.com| 国产精品久久久久久免费免熟 | 老熟妇一区二区三区| 国产女主播一区| 欧美激情第3页| 欧美视频网站| 鲁鲁视频www一区二区| 忘忧草在线www成人影院| 色综久久综合桃花网| 91theporn国产在线观看| 亚洲精品久久7777| 极品粉嫩小仙女高潮喷水久久 | 中文字幕第六页| 亚洲精品123区| 日韩福利在线| 国产精品一区免费在线 | 91女厕偷拍女厕偷拍高清| 99热成人精品热久久66| 日韩一区二区在线| 国产精品乱码一区二区三区| 97久久夜色精品国产九色| 成人欧美亚洲| 日韩一区二区三| 久久精品视频1| 中文字幕在线不卡一区| 精品人妻无码中文字幕18禁| 国产午夜久久| 正在播放精油久久| 欧美在线导航| 91亚洲精品一区| 超碰国产一区| 欧美成人久久久| 激情小说 在线视频| 日韩一区二区三区四区| 亚洲av中文无码乱人伦在线视色| 国产精品免费av| 在线黄色免费网站| 久久91精品久久久久久秒播| 国产3p露脸普通话对白| 精品福利久久久| 国产精品手机视频| 欧美日韩免费电影| 日韩av黄色在线观看| 欧美大片黄色| 视频在线观看99| 日韩福利一区二区| 日韩女优毛片在线| 亚洲综合网av| 一本到不卡精品视频在线观看| 亚洲欧美一区二区三区四区五区| 久久精品男人的天堂| 极品人妻一区二区| 久久国产精品99久久久久久老狼| av动漫在线看| 国一区二区在线观看| 一区高清视频| 成人精品影院| 日本精品一区二区| 噜噜噜狠狠夜夜躁精品仙踪林| 91色精品视频在线| 99久久久国产精品免费调教网站| 国外成人性视频| 色呦呦在线视频| 按摩亚洲人久久| 超碰在线国产| 亚洲图片在区色| 四虎在线免费看| 亚洲国产小视频| 性做久久久久久久久久| 欧美精品v日韩精品v韩国精品v| 亚洲精品成人在线视频| 欧美特黄级在线| 在线观看 中文字幕| 亚洲一区av在线| 国产亚洲精品久久777777| 亚洲精品国产一区二区精华液 | 黄色手机在线视频| 三级久久三级久久| 国产第一页视频| 久久国产欧美| 日日碰狠狠躁久久躁婷婷| 午夜综合激情| 日韩av资源在线| 久久婷婷激情| 成人免费在线观看视频网站| 视频一区视频二区中文| 波多结衣在线观看| 免费精品99久久国产综合精品| 青青青在线视频免费观看| 日韩二区在线观看| 午夜两性免费视频| 寂寞少妇一区二区三区| 亚洲自拍第三页| 风流少妇一区二区| 日韩无码精品一区二区| 91在线观看下载| av中文字幕免费观看| 国产欧美久久久精品影院| 久操视频在线观看免费| 国产精品水嫩水嫩| 国产女人被狂躁到高潮小说| 亚洲综合精品自拍| 日韩不卡视频在线| 欧美自拍丝袜亚洲| 国产老妇伦国产熟女老妇视频| 欧美一级片在线| a级大片免费看| 涩爱av色老久久精品偷偷鲁 | 盗摄牛牛av影视一区二区| 高清av免费一区中文字幕| 开心激情综合| 亚洲高清在线观看一区| 欧美99在线视频观看| 久久99久久久久久| 日韩成人一级大片| 无码人妻一区二区三区精品视频| 99精品视频一区二区三区| 亚洲精品国产精品国自| 亚洲欧美日韩久久| 国产福利拍拍拍| 色美美综合视频| 国产农村老头老太视频| 欧美体内谢she精2性欧美| 亚洲图片在线播放| 亚洲国产精品字幕| 婷婷五月在线视频| 久久久久久久999精品视频| 电影一区二区三| 亚洲wwwav| 深爱激情久久| 久操手机在线视频| 日本视频一区二区| 国产女人18毛片水真多18| 中文子幕无线码一区tr| 久操视频免费在线观看| 欧美性猛片xxxx免费看久爱| 丰满肉肉bbwwbbww| 中文字幕国产亚洲2019| 妞干网免费在线视频| 国产在线精品一区免费香蕉| 日韩有码中文字幕在线| 国产精品12p| 蜜臀a∨国产成人精品| 久久久影院一区二区三区| 欧洲综合视频| 一区二区三区在线播放欧美| 人人超在线公开视频| 国产日韩在线看| 亚洲人成网77777色在线播放 | 国产精品免费一区二区三区观看| 欧美日韩水蜜桃| 国产免费一区二区三区视频| 国产精品99久久久久久久女警 | 精品久久久中文| 不卡的日韩av| 久久久精品免费视频| 怡红院成人在线| 玛丽玛丽电影原版免费观看1977 | 神马久久久久久久久久| 久久躁日日躁aaaaxxxx| 日韩护士脚交太爽了| 日本一区二区在线| 亚洲在线观看| 天天躁日日躁狠狠躁av麻豆男男 | 国产午夜激情视频| 欧美一区二区福利视频| 日本黄色片在线观看| 国产精品入口免费视频一| 亚洲动漫精品| 鲁一鲁一鲁一鲁一色| 成人综合在线网站| 久久成人国产精品入口| 日韩一级二级三级精品视频| 亚洲s色大片| 国产日韩欧美综合一区| av五月天在线| 久久综合狠狠综合久久综合88| 日韩精品人妻中文字幕| 亚洲高清色综合| 成av人片在线观看www| 国产精品一区二区你懂得| 激情av一区| 五月天丁香社区| 精品成人国产在线观看男人呻吟| 日本精品999| 国内精品国产三级国产在线专| 亚洲成人偷拍| 国产精品专区在线| 91色.com| 一级黄色在线观看| 中文字幕亚洲欧美在线 | 147欧美人体大胆444| 欧美日韩蜜桃| 国产极品一区二区| 色一情一乱一乱一91av| 国产精品秘入口| 成人在线国产精品| 一区在线视频观看| 亚洲专区区免费| 欧美性生活一区| 69xxx在线| 精品人伦一区二区三区| 视频一区免费在线观看| 亚洲第九十七页| 欧美午夜片在线看| 中文字幕在线观看播放| 国产精品久久一区二区三区| 销魂美女一区二区三区视频在线| 精品人妻无码一区二区三区换脸 | 日本精品999| 国产成人精品久久久| 91亚洲一区| 精品人妻一区二区免费| 色香蕉成人二区免费| 色影院视频在线| 国产一区二区中文字幕免费看| 蜜桃av综合| 玛丽玛丽电影原版免费观看1977 | 欧美国产禁国产网站cc| 国产男女裸体做爰爽爽| 18性欧美xxxⅹ性满足| 手机亚洲手机国产手机日韩| 性生活在线视频| 色呦呦一区二区三区| av片在线观看网站| 欧美综合激情| 国产.欧美.日韩| 精品国产www| 国内精品久久久久影院优| 日韩毛片视频| 国产老熟女伦老熟妇露脸| 欧美日韩国产区一| 国产精品xx| 欧美日韩午夜爽爽| 国产欧美日本一区视频| 狠狠综合久久av一区二区| 国产日产亚洲精品| 一区二区日本视频| 四虎免费在线视频|