精品欧美一区二区三区在线观看 _久久久久国色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片一区二区下载| 亚洲国产视频在线| 日韩一区日韩二区| 午夜免费在线观看精品视频| 一道本在线免费视频| 久久久久久久久久久久久久久久久 | 69成人精品免费视频| 麻豆亚洲一区| 日韩福利片在线观看| 警花av一区二区三区| 欧美国产精品一区二区三区| 欧美一区二区视频97| 性欧美18—19sex性高清| 免费在线观看黄色| 精品女人视频| 亚洲一二三级电影| 日韩精品一区二区三区丰满| 亚洲精品中文字幕乱码三区91| 国产亚洲成av人片在线观黄桃| 一区二区三区在线免费| 91免费看国产| 青娱乐国产盛宴| av在线成人| 中文字幕日韩一区| 久久久综合香蕉尹人综合网| 全部毛片永久免费看| 国产精品久久久久久久久久白浆| 欧美日韩在线直播| 水蜜桃亚洲精品| 欧美成人一区二区视频| 不卡视频在线| 欧美日韩亚洲综合一区二区三区| 丰满少妇久久久| 日本福利片高清在线观看| 亚洲免费婷婷| 中文字幕日韩精品在线| 伊人成人222| 激情图片在线观看高清国产| 成人黄色小视频在线观看| 91精品国产99久久久久久| 一区二区三区四区免费| 国产成人精品一区二区三区视频| 国产精品灌醉下药二区| 亚洲综合大片69999| 午夜偷拍福利视频| 一区二区三区韩国免费中文网站| 91福利国产精品| 这里只有精品66| 三级网站免费观看| 视频一区二区三区中文字幕| y97精品国产97久久久久久| 老司机av网站| 综合毛片免费视频| 国产精品国产精品国产专区不蜜| 日韩欧美一区二区在线观看| 国产在线观看黄| 国产一区免费电影| 2021国产精品视频| 中日韩精品视频在线观看| 久久精品国产99久久| 日韩欧美国产小视频| 女人扒开屁股爽桶30分钟| 麻豆视频在线观看免费网站| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产网站一区二区| 国产有码在线一区二区视频| 久久黄色免费网站| 欧美欧美全黄| 亚洲一区二区福利| 欧美xxxx日本和非洲| 视频精品一区二区三区| 色av综合在线| 性欧美videossex精品| 欧美卡一卡二| 欧美经典一区二区| 国产视频不卡| 国产精品一区二区av白丝下载| 免费看的黄色欧美网站| 日本高清+成人网在线观看| 91aaa在线观看| 国产一区二区三区四区五区传媒| 欧美电视剧在线看免费| 亚洲免费观看在线| 亚洲日韩中文字幕一区| 日韩美一区二区三区| 在线观看国产免费视频| 日韩三级久久| 日韩电影大全免费观看2023年上| 久久艹这里只有精品| 搜成人激情视频| 黄色精品一区二区| 992tv快乐视频| 色影视在线观看| 久久精品男人天堂av| 在线观看日韩羞羞视频| 6699嫩草久久久精品影院| 亚洲精品视频免费看| 亚洲国产精品一区二区第一页| 日本啊v在线| 国产精品理论在线观看| 日本一区二区三区精品视频| 欧洲成人av| 亚洲丝袜精品丝袜在线| av动漫免费观看| 久久精品视频免费看| 亚洲国产精品成人综合| 国产精品视频二| 国产福利在线免费观看| 欧美色倩网站大全免费| 波多野结衣视频播放| 97青娱国产盛宴精品视频| 欧美xxxx老人做受| 女女调教被c哭捆绑喷水百合| 国产一区国产二区国产三区| 久久青草福利网站| 男人天堂中文字幕| 免费日本视频一区| 国产欧美日韩精品在线观看| 亚洲怡红院av| 国产综合色精品一区二区三区| 成人一区二区三区四区| 天天色棕合合合合合合合| 亚洲欧洲色图综合| 国产无套粉嫩白浆内谢的出处| 日本久久免费| 欧美日韩在线不卡| 在线免费观看成年人视频| 欧美**字幕| 色综合伊人色综合网站| 欧美日韩黄色网| 国产精品九九| 国语自产精品视频在线看一大j8| 97av免费视频| 懂色av一区二区夜夜嗨| 亚洲a∨日韩av高清在线观看| 国产综合视频一区二区三区免费| 黄色成人av在线| 亚洲欧美日韩色| 欧美日韩综合| 91成人免费在线观看| 天天操天天干天天操| 一区二区三区四区视频精品免费| 亚洲精品国产一区二区三区| www.亚洲一二| 欧美激情免费在线| 国产精品xxxxxx| 久久精品在这里| 最新视频 - x88av| а√天堂8资源在线| 欧美在线视频日韩| 久久久久久无码精品人妻一区二区| 激情视频极品美女日韩| 国产综合在线视频| 亚洲精品久久久久久久久久 | 日本少妇aaa| 亚洲性感美女99在线| 奇米一区二区三区四区久久| 日韩有码电影| 日本精品一级二级| 嘿嘿视频在线观看| 在线日本成人| 精品国产一区二区三区四区vr| 在线观看免费网站黄| 亚洲一区二区三区中文字幕| 亚洲一区和二区| 国产日本精品| 亚洲综合av影视| xxxx另类黑人| 亚洲人成网7777777国产| 欧美又粗又大又长| jiyouzz国产精品久久| 国产一区一区三区| 亚洲国产中文在线二区三区免| 尤物99国产成人精品视频| 日韩美女视频网站| 久久久午夜精品理论片中文字幕| av无码精品一区二区三区| 日韩精品欧美| 清纯唯美亚洲综合| aiai在线| 欧美一区午夜视频在线观看| 超薄肉色丝袜一二三| 精品制服美女久久| 欧洲精品码一区二区三区免费看| 精品福利在线| 亚洲天堂成人在线| 夜夜狠狠擅视频| 亚洲午夜国产一区99re久久| 在线免费看黄视频| 精品在线一区二区三区| 国产精品333| 第四色在线一区二区| 国产不卡在线观看| 青青草免费观看免费视频在线| 欧美日韩国产经典色站一区二区三区 | 欧美一级网址| 在线播放日韩专区| 国产特黄一级片| ㊣最新国产の精品bt伙计久久| 成人免费看片载| 日韩av电影天堂| 欧美中文娱乐网| 精品视频91| 日产精品久久久一区二区福利| 天天干天天干天天干| 欧美精品一级二级| 国产一二三av| 麻豆精品一区二区综合av| 性欧美精品一区二区三区在线播放 | 亚洲第一香蕉网| 国产精品资源在线看| japanese在线播放| 国产影视精品一区二区三区| 激情欧美一区二区三区中文字幕| 成人在线视频www| 久久亚洲电影天堂| 国产99久久九九精品无码免费| 亚洲精品少妇30p| 国产性猛交xx乱| 久久综合色婷婷| www.欧美日本| 99在线精品视频在线观看| 久久视频在线观看中文字幕| 亚洲不卡在线| 成人午夜在线视频一区| 深夜国产在线播放| 亚洲第一男人天堂| 波多野结衣啪啪| 国产精品高潮呻吟| 熟女俱乐部一区二区视频在线| 成人av在线看| 国产精品日日摸夜夜爽| 精品一区二区三区久久久| 亚洲欧美国产日韩综合| 日本视频一区二区三区| 白嫩少妇丰满一区二区| 99久久夜色精品国产亚洲96| 999在线免费观看视频| 高潮在线视频| 久久免费精品视频| 波多野结衣精品| 久久久久亚洲精品国产| 国产高清在线a视频大全| 久久人人爽人人爽人人片av高请| 欧美色图天堂| 欧美激情精品久久久久久| 日皮视频在线观看| 欧美疯狂xxxx大交乱88av| 青春草视频在线| 国模吧一区二区| 欧洲一区精品| 国产精品电影在线观看| 欧美1—12sexvideos| 欧美高清性猛交| 96av在线| 国产成人av在线| 国产国产一区| 91在线视频成人| 国产精品久久久网站| 久久综合给合久久狠狠色| 精品在线播放| 亚洲视频小说| 性人久久久久| 91国产在线免费观看| 亚洲一区二区三区免费| 国产免费一区二区| 女人丝袜激情亚洲| 中文字幕日韩精品一区二区| 综合一区在线| 久久久久综合一区二区三区| 视频国产一区| 亚洲欧美99| 欧美三级乱码| 黑鬼大战白妞高潮喷白浆| 麻豆精品在线观看| 中文字幕一区二区三区人妻在线视频 | 国产高清在线看| 精品国产乱子伦一区| 亚洲怡红院av| 欧美精品一区二区三区四区| 可以在线观看的黄色| 亚洲第一av网站| 国产特黄在线| 欧美黑人xxx| 欧美日韩不卡| 国产精品久久国产精品| 日韩免费高清视频网站| 精品伦理一区二区三区| 四季av一区二区凹凸精品| 国产a级片网站| 欧美体内she精视频在线观看| 大肉大捧一进一出好爽视频| 136国产福利精品导航网址| 黄色小视频大全| 新狼窝色av性久久久久久| 九一精品久久久| 91视频观看视频| 久久久久9999| 亚洲人成7777| 中日韩黄色大片| 91麻豆精品91久久久久同性| 欧美日本韩国一区二区| 欧美国产视频一区二区| 国产精品蜜月aⅴ在线| 免费精品视频一区二区三区| 欧美激情精品久久久六区热门| 欧洲熟妇精品视频| 91香蕉视频黄| 免费网站看av| 91精品欧美综合在线观看最新| 女人偷人在线视频| 午夜精品一区二区三区在线视频| 91精品国产自产观看在线| 区一区二区三区中文字幕| 亚洲经典三级| 亚洲国产欧美日韩在线| 中文字幕国产一区| 欧产日产国产69| 欧美精品一区二区三区在线 | 国产一区二区三区网| 日本少妇高潮喷水视频| 国产成人精品免费看| 老熟妇高潮一区二区三区| 欧美网站大全在线观看| 7777久久亚洲中文字幕| 亚洲人精品午夜在线观看| 国产伦子伦对白在线播放观看| 成人在线观看91| 欧美视频亚洲视频| 亚洲妇女无套内射精| 亚洲男人天堂av网| 国产一区二区三区在线观看| 伊人久久大香线蕉av一区二区| 香蕉成人av| 日本黑人久久| 久久最新视频| 妺妺窝人体色WWW精品| 亚洲人成网站影音先锋播放| 国产精品51麻豆cm传媒| 在线色欧美三级视频| 456亚洲精品成人影院| 日本一区免费观看| 亚洲国产精品自拍视频| 亚洲黄网站在线观看| 99热这里只有精品1| 久久久精品免费视频| 亚洲欧美成人影院| 亚洲一区二区三区久久| 中文字幕一区二区精品区| 丰满饥渴老女人hd| 亚洲一区二区三区在线播放| 亚洲乱色熟女一区二区三区| 亚洲精品久久久久久久久| 国产二区在线播放| 国产成人一区三区| 日韩av在线中文字幕| 国产精品一区二区小说| 亚洲人成精品久久久久久| 亚洲黄色a级片| 午夜精品久久久久久久久久久久 | 看电视剧不卡顿的网站| avtt天堂在线| 91久久精品国产91性色tv| 国产精品久久一区二区三区不卡| 国产精品一区二区性色av| 91精品一区二区三区综合在线爱| 国产日韩一区二区在线| 国产午夜三级一区二区三| 亚洲综合免费视频| 欧美成人午夜激情在线| 日本黄色一区| 麻豆av一区二区| 日本亚洲欧美天堂免费| 久草手机视频在线观看| 91福利资源站| 爆操欧美美女| 国产欧美日韩中文字幕| 欧美淫片网站| 添女人荫蒂视频| 亚洲一二三专区| 户外极限露出调教在线视频| 成人在线视频网站| 亚洲美女视频在线免费观看| 亚洲高潮女人毛茸茸| 日韩三区在线观看| 黄色大片在线播放| 激情视频一区二区| 久久成人久久爱| 国产成人精品一区二三区| 色777狠狠综合秋免鲁丝| 都市激情亚洲| 中文字幕第88页| 天天综合网天天综合色| 麻豆视频在线观看免费网站| 免费在线一区二区| 国产精品一级在线| 欧美日韩a v| 在线亚洲欧美视频| 99国产精品免费网站| 日本人视频jizz页码69|