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

還在用Github管理機(jī)器學(xué)習(xí)項目?你早該了解這些更專業(yè)的新工具!

人工智能 機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí),不過是和數(shù)據(jù)和軟件打交道。那就應(yīng)該是是運行代碼、迭代算法的簡單問題呀?一段時間后,我們就能擁有一個完美的訓(xùn)練有素的ML模型。

[[269295]]

大數(shù)據(jù)文摘出品

編譯:錢天培、胡笳

“太復(fù)雜了!機(jī)器學(xué)習(xí)(ML)項目實在太復(fù)雜了!”

聽到這種抱怨,熟悉軟件開發(fā)的小伙伴們往往是嗤之以鼻的。

機(jī)器學(xué)習(xí),不過是和數(shù)據(jù)和軟件打交道。那就應(yīng)該是是運行代碼、迭代算法的簡單問題呀?一段時間后,我們就能擁有一個***的訓(xùn)練有素的ML模型。

有什么復(fù)雜的?

然而,當(dāng)真正著手起機(jī)器學(xué)習(xí)項目,你就會發(fā)現(xiàn):事情可沒有那么簡單!

在項目進(jìn)行了一段時間后,你的訓(xùn)練數(shù)據(jù)或許已經(jīng)被更改或刪除,而你對訓(xùn)練腳本的理解可能也已經(jīng)十分模糊。

回過頭看你訓(xùn)練好的模型,你可能也記不得每一個模型是怎么訓(xùn)練出來的了;再或者,你想要查看先前訓(xùn)練好的模型,卻發(fā)現(xiàn)模型早已被覆蓋。

更可怕的是團(tuán)隊協(xié)作,你想要把你的工作分享給你的同事們,他們卻怎么也無法復(fù)現(xiàn)你的結(jié)果,更別提參與協(xié)作了。

別慌!今天,文摘菌就來帶大家系統(tǒng)地學(xué)習(xí)一下,如何正確地管理機(jī)器學(xué)習(xí)(ML)項目。

正如一般的軟件開發(fā)項目一樣,你需要更好地管理代碼版本和項目資產(chǎn)。在軟件開發(fā)項目中,人們可能需要重新審視項目先前的狀態(tài)。在機(jī)器學(xué)習(xí)項目中,我們該如何實現(xiàn)類似的審查呢?與Pull Request相對應(yīng)的又是什么呢?

就我個人而言,我才剛剛開始接觸機(jī)器學(xué)習(xí)工具。在學(xué)習(xí)過程中,我觀看了一些教程視頻。老師們提到的一些問題會讓我想起我在軟件工程職業(yè)生涯早期碰到的難題。例如,在1993到1994年,我是一個開發(fā)電子郵件用戶代理的團(tuán)隊***工程師。我們沒有任何源代碼管理(SCM)系統(tǒng)。每天我都會咨詢其他團(tuán)隊成員,看看他們那天做了哪些改變,也就是在他們的源樹和主源樹之間運行一個diff操作,然后手動更改代碼。稍后,團(tuán)隊成員從主源樹手動更新他們的源樹。

在我們發(fā)現(xiàn)早期的SCM系統(tǒng)(CVS)之前,這真是一團(tuán)糟。SCM工具使項目運行得更加順利。

當(dāng)我了解到機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)項目中使用的工具時,我發(fā)現(xiàn)機(jī)器學(xué)習(xí)過程就如上邊所說的那樣。即使在今天,機(jī)器學(xué)習(xí)研究人員有時會將實驗(數(shù)據(jù),代碼等)存儲在并行目錄結(jié)構(gòu)中,以便于進(jìn)行diff審查,就像我在1993年所做的那樣。

那么,理想中的機(jī)器學(xué)習(xí)項目管理應(yīng)該是怎么樣的呢?

ML項目管理原則

讓我們從一些簡要的ML項目管理原則說起。

在任何ML項目中,程序員們都會進(jìn)行許多實驗,為目標(biāo)場景開發(fā)***的訓(xùn)練模型。實驗一般包含:

  • 代碼和配置:實驗中使用的軟件,以及配置參數(shù)
  • 數(shù)據(jù)集:任何輸入數(shù)據(jù)的使用——這可以是千兆級別大小的數(shù)據(jù),比如語音識別、圖像識別項目中所用到的數(shù)據(jù)
  • 輸出:訓(xùn)練后的ML模型和實驗的任何其他輸出

機(jī)器學(xué)習(xí)項目本質(zhì)也就是軟件運行。但是,與同事共享文件或復(fù)制結(jié)果,并及時回顧以評估項目通常十分困難。我們需要更全面的管理工具。

解決方案需要涵蓋以下幾點(從Patrick Ball的題為《原則性數(shù)據(jù)處理》的演講中摘錄):

(1) 透明性:方便檢查ML項目的方方面面

  • 使用什么代碼、配置和數(shù)據(jù)文件
  • 工程項目采用什么工序,工序的次序是什么

(2) 可審核性:方便檢查pipeline的中間結(jié)果

(3) 可復(fù)現(xiàn)性:在開發(fā)的任何階段精確地重新執(zhí)行項目的能力,以及同事精確地重新執(zhí)行項目的能力

  • 記錄處理步驟,以便任何人都可以自動重新運行這些步驟
  • 在項目進(jìn)行過程中記錄項目的狀態(tài)。“狀態(tài)”表示代碼、配置和數(shù)據(jù)集
  • 能夠在項目歷史的任何時候重新創(chuàng)建可用的精確數(shù)據(jù)集

(4) 可擴(kuò)展性:支持多個同事同時處理一個項目的能力,以及同時處理多個項目的能力。

為什么不在機(jī)器學(xué)習(xí)項目中使用常規(guī)的軟件工程工具?

誠然,在常規(guī)軟件工程項目中使用的許多工具可能對機(jī)器學(xué)習(xí)研究人員有用。

在常規(guī)的源代碼管理系統(tǒng)(如Git)中可以輕松地管理代碼和實驗配置,并且可以使用pull request之類的技術(shù)來管理對這些文件的更新。CI/CD(Jenkins等)系統(tǒng)甚至可以用于自動化項目運行。

但是,ML項目另有不同之處,使得普通的軟件開發(fā)工具無法滿足所有的需求。下面是幾個重要的不同點:

  • 度量標(biāo)準(zhǔn)驅(qū)動(metrics-driven)的開發(fā)與特性驅(qū)動(feature-driven)的開發(fā):在常規(guī)軟件工程中,“是否發(fā)布”這一決策基于團(tuán)隊是否達(dá)完成了一些特征。相比之下,機(jī)器學(xué)習(xí)研究人員研究的是一種完全不同的測量方法——生成的機(jī)器學(xué)習(xí)模型的預(yù)測值。研究人員將迭代地生成幾十個(或更多)模型,測量每個模型的準(zhǔn)確性。由于目標(biāo)是找到最精確的模型,因此項目由每個實驗中實現(xiàn)的度量指標(biāo)來指導(dǎo)。
  • 機(jī)器學(xué)習(xí)模型需要大量的資源來訓(xùn)練:一個常規(guī)的軟件項目將文件組織在一起編譯一個軟件產(chǎn)品,而機(jī)器學(xué)習(xí)項目則訓(xùn)練一個描述AI算法的“模型”。在大多數(shù)情況下,編譯一個軟件產(chǎn)品只需要幾分鐘,非常快速,因此許多團(tuán)隊遵循持續(xù)集成(continuous integration)的策略。訓(xùn)練一個機(jī)器學(xué)習(xí)模型則需要很長時間。除非必要,***避免持續(xù)集成。
  • 龐大的數(shù)據(jù)集和訓(xùn)練好的模型:機(jī)器學(xué)習(xí)開發(fā)階段幾乎總是需要龐大的數(shù)據(jù)集,此外,訓(xùn)練過的模型也可能是巨大的。普通的源代碼管理工具(Git等)不能很好地處理大型文件,而且Git- lfs之類的附加組件也不適合ML項目。
  • 工作流(pipelines):機(jī)器學(xué)習(xí)項目是一系列步驟——如下載數(shù)據(jù)、準(zhǔn)備數(shù)據(jù)、將數(shù)據(jù)分離到培訓(xùn)/驗證集、培訓(xùn)模型和驗證模型。許多人使用pipelines這個詞來描述整個過程,意思是用每個步驟的離散命令來構(gòu)造機(jī)器學(xué)習(xí)項目,而不是把所有東西都塞進(jìn)一個程序中。
  • 專用硬件:軟件開發(fā)商可以將其軟件基礎(chǔ)設(shè)施托管在任何類型的服務(wù)器設(shè)備上。如果他們想要一個云部署,他們可以從他們喜歡的云計算提供商那里租用VPS。然而,機(jī)器學(xué)習(xí)研究人員有巨大的計算需求。高性能GPU不僅可以加速視頻編輯,還可以讓ML算法加速“飛”起來,大大縮短了訓(xùn)練ML模型所需的時間。

現(xiàn)在,我們已經(jīng)有了一個機(jī)器學(xué)習(xí)項目開發(fā)的原則列表,并了解了ML項目和普通軟件開發(fā)項目的不同之處。

接下來,讓我們看看有哪些開源軟件可以幫助我們實現(xiàn)這些原則。

我們將特別討論兩個工具,MLFlow和DVC。當(dāng)然,還有很多其他軟件可以取得類似的效果。

機(jī)器學(xué)習(xí)項目中的數(shù)據(jù)與模型存儲

我們的討論可以歸結(jié)為:

  • 跟蹤每一輪訓(xùn)練機(jī)器學(xué)習(xí)模型使用的數(shù)據(jù)文件
  • 跟蹤訓(xùn)練后的模型和評估指標(biāo)
  • 通過任何形式的文件共享系統(tǒng)與同事共享數(shù)據(jù)文件的簡單方法

總的來說,我們需要一個數(shù)據(jù)跟蹤系統(tǒng)來透明地審計、或者復(fù)現(xiàn)結(jié)果。我們也需要一個數(shù)據(jù)共享系統(tǒng)來將項目團(tuán)隊擴(kuò)展到多個同事。

就如我們先前討論的一樣,使用Git或其他SCM(源代碼管理系統(tǒng))來存儲機(jī)器學(xué)習(xí)項目中使用的數(shù)據(jù)文件是不切實際的。

一些庫提供了API來簡化遠(yuǎn)程存儲上的文件處理,并管理向遠(yuǎn)程存儲上傳或獲取文件。雖然這有利于遠(yuǎn)程數(shù)據(jù)集的共享訪問,但卻對我們面對的問題沒有幫助。

首先,它是嵌入式配置的一種形式,因為文件名被嵌入到軟件中。在源代碼中嵌入配置設(shè)置的任何程序在其他情況下都更難以被重新使用。其次,它沒有將腳本版本和其使用的數(shù)據(jù)文件關(guān)聯(lián)起來。

下面,然后我們看一下MLFlow的示例代碼:

  1. mlflow.pytorch.load_model("runs:/<mlflow_run_id>/run-relative/path/to/model") 

這支持多種文件訪問“方案”,包括S3這樣的云存儲系統(tǒng)。這里的示例從“run”區(qū)域加載一個文件,在本例中是一個經(jīng)過訓(xùn)練的模型。每次執(zhí)行一段代碼時,MLFlow都會生成一個“run”。你需要配置一個存儲“run”數(shù)據(jù)的位置,并且顯然會為每個用于索引到數(shù)據(jù)存儲區(qū)域的運行生成一個“run ID”。

這種方式有效地將數(shù)據(jù)與對應(yīng)SCM源碼管理庫中的代碼和配置文件的commit提交版本關(guān)聯(lián)起來。此外,MLFLow API有多種實現(xiàn)語言,并不局限于 Python語言。

DVC采用的則是另一種方式。對比上面將文件API集成到ML腳本中,你的腳本可以簡單地使用普通文件系統(tǒng)的API實現(xiàn)輸入和輸出文件。例如:

  1. model=torch.load(‘path/to/model.pkl’) 

通過上述代碼,路徑名稱將通過這條命令傳入。你無需特別修改代碼,因為DVC可以通過外部傳遞訓(xùn)練代碼或驗證模型代碼需要的值。

DVC讓這一切變得透明——數(shù)據(jù)文件版本與代碼的Git版本是相匹配的。

通過下述命令,你可將文件或文件夾加入DVC的版本管理:

  1. $ dvc add path/to/model.pkl 

數(shù)據(jù)存儲在你的工作目錄中。瀏覽各項運行的結(jié)果也很簡單,只需要瀏覽你的Git歷史即可。查看特定結(jié)果就像git checkout一樣簡單,DVC將被調(diào)用,并確保將正確的數(shù)據(jù)文件連接到workspace。

一個”DVC文件”將被創(chuàng)建,用于追蹤每個文件及目錄,并將被添加到workspace中。這樣做有兩個目的,一是可以追蹤數(shù)據(jù)和模型文件,另一個則是記錄工作流程中的命令。我們將在下一節(jié)中介紹這部分。

這些DVC文件記錄文件和目錄的MD5總和校驗碼(MD5 checksum)。他們被提交到git workspace上,因此DVC文件記錄了每次git提交的每個文件的總和校驗碼。DVC使用了“DVC緩存目錄”來存儲每個文件的多個實例。文件實例通過總和校驗碼進(jìn)行索引,并使用reflinks或symlinks鏈接到workspace。當(dāng)DVC響應(yīng)git checkout命令時,它能夠根據(jù)DVC文件中的總和校驗碼快速地重排鏈接文件。

DVC支持遠(yuǎn)程緩存目錄,用于共享文件和模型。

  1. $ dvc remote add remote1 ssh://user@host.name/path/to/dir$ dvc push$ dvc pull 

DVC remote是一個存儲池,可以進(jìn)行數(shù)據(jù)共享。它支持許多存儲服務(wù),包括S3、HTTP和FTP等。創(chuàng)建一個DVC remote非常簡單。dvc push和dvc pull命令高度模擬了git push 和git pull命令。dvc push用于將數(shù)據(jù)發(fā)送到遠(yuǎn)程DVC的緩存中,dvc pull用于從遠(yuǎn)程DVC緩存中拉取數(shù)據(jù)。

機(jī)器學(xué)習(xí)項目中的工作流描述

接下來,我們將討論如何更好地描述機(jī)器學(xué)習(xí)項目的工作流。我們應(yīng)該一股腦將所有東西堆成一個程序嗎?還是應(yīng)該使用多種工具?

為了盡可能地創(chuàng)造靈活性,我們可以將工作流通過pipeline或有向無環(huán)圖(DAG),并采用命令行參數(shù)作為配置選項的方式來實現(xiàn)。這有點類似Unix哲學(xué)中的小而精巧的工具——小巧但可以很好地協(xié)同工作。其行為可由命令行選項或環(huán)境變量指定,并且可以根據(jù)需要任意搭配使用。

相比之下,很多ML框架采用不同的方式。他們編寫單獨的程序來驅(qū)動特定項目的工作流。程序***步先將數(shù)據(jù)拆分為訓(xùn)練集和驗證集,然后訓(xùn)練模型并驗證模型。這種整套的單獨程序可帶來重用代碼的機(jī)會有限。

將ML項目構(gòu)建pipeline可帶來如下好處

  • 管理復(fù)雜性:將這些步驟作為單獨命令實現(xiàn)可以提高透明度,并幫助你更加集中精力。
  • 優(yōu)化執(zhí)行:可以跳過那些沒有修改且不需要返回值的步驟。
  • 可重用性:在多個項目中可重用相同的工具。
  • 可擴(kuò)展性:不同的工具可由不同的團(tuán)隊成員獨立開發(fā)。

在MLFlow中,你需要編寫一個“驅(qū)動程序”。這個程序包含了所需的執(zhí)行邏輯,例如處理及生成機(jī)器學(xué)習(xí)模型。在程序背后,MLFlow API發(fā)送請求給MLFlow 服務(wù)器,通過該服務(wù)器生成指定的命令。

下面這個多步驟工作流的MLFlow例子清晰的展示了這一切。

  1. ...load_raw_data_run = _get_or_run("load_raw_data", {}, git_commit)ratings_csv_uri = os.path.join(load_raw_data_run.info.artifact_uri,                    "ratings-csv-dir")etl_data_run = _get_or_run("etl_data",                   {"ratings_csv": ratings_csv_uri,                    "max_row_limit": max_row_limit},                    git_commit)…als_run = _get_or_run("als",                   {"ratings_data": ratings_parquet_uri,                   "max_iter": str(als_max_iter)},                   git_commit)…_get_or_run("train_keras", keras_params, git_commit, use_cache=False)... 

_get_or_run函數(shù)是mlflow.run的一個wrapper。每個調(diào)用函數(shù)中的***個參數(shù)為在MLproject文件中定義的entrypoint。每個entrypoint包含環(huán)境變量,要運行的命令,以及傳遞給該命令的參數(shù)。例如:

  1. etl_data:    parameters:      ratings_csv: path      max_row_limit: {type: int, default: 100000}    command: "python etl_data.py --ratings-csv {ratings_csv} --max-row-limit {max_row_limit}" 

乍一看感覺非常不錯。但是這里有幾個問題值得思考:

  • 如果你的工作流是比直線流程更復(fù)雜的情況怎么辦?你可以將傳給mlflow.run的同步參數(shù)設(shè)為false,然后等待SubmittedRun對象標(biāo)記任務(wù)已完成。也就是說,可以在MLFlow API上構(gòu)建流程管道系統(tǒng)。
  • 為什么需要服務(wù)器?為什么不直接通過命令行執(zhí)行命令?增加服務(wù)器及其配置使得MLFlow項目的設(shè)置更加復(fù)雜。
  • 如何避免執(zhí)行那些不需要的任務(wù)?在許多ML項目中,訓(xùn)練模型通常需要數(shù)天時間。資源應(yīng)該只有在需要時才應(yīng)該被使用,例如更換數(shù)據(jù),修改參數(shù)或算法。

DVC可以使用常規(guī)命令行工具,并且既不需要設(shè)置服務(wù)器也不需要編寫驅(qū)動程序。DVC支持使用前面提到的,通過一組DVC文件將工作流定義為有向無環(huán)圖(DAG)。

我們之前提到了,DVC文件會與添加到workspace中的文件相關(guān)聯(lián)。DVC文件同時還描述了要執(zhí)行的命令:

  1. $ dvc run -d matrix-train.p -d train_model.py \          -o model.p \          python train_model.py matrix-train.p 20180226 model.p$ dvc run -d parsingxml.R -d Posts.xml \          -o Posts.csv \          Rscript parsingxml.R Posts.xml Posts.csv 

dvc run命令定義了一個DVC文件,其中包含了需要執(zhí)行的命令。-d參數(shù)記錄了對文件的依賴性,DVC將根據(jù)校驗總和碼來檢測文件的更改。-o參數(shù)表示命令輸出設(shè)置。一個命令的輸出同樣可以用于另一個命令的輸入。通過查看依賴關(guān)系和輸出,DVC可以計算出執(zhí)行命令的順序。

AI輸出(包含訓(xùn)練模型)將被自動的記錄在DVC的緩存中,workspace中的其他數(shù)據(jù)文件也如此。

因為它計算校驗和,DVC可以檢測到更改的文件。當(dāng)用戶請求DVC重新執(zhí)行管道時,它只執(zhí)行有變化的那部分。輸入文件沒有變化的情況,DVC可以節(jié)省大量模型訓(xùn)練任務(wù)所需要的時間。

所有的執(zhí)行都使用常規(guī)命令行,不需要設(shè)置服務(wù)器。如果你希望在云計算環(huán)境,或在附加GPU的服務(wù)器上執(zhí)行,只需要將代碼和數(shù)據(jù)部署到該服務(wù)器上,并通過命令行執(zhí)行DVC命令即可。

總結(jié)

我們在提高機(jī)器學(xué)習(xí)實踐原則的探索上已經(jīng)走了很長一段路。如我們所知,機(jī)器學(xué)習(xí)領(lǐng)域需要更好的管理工具,以便機(jī)器學(xué)習(xí)團(tuán)隊能夠更有效、更可靠地工作。

結(jié)果可復(fù)現(xiàn)意味著他人可以評估你已完成的工作,或者協(xié)作進(jìn)行更深層的開發(fā)。可重復(fù)性具有很多先決條件,包括能夠檢查系統(tǒng)的每個部分,以及能夠精確地重新運行軟件及輸入數(shù)據(jù)。

機(jī)器學(xué)習(xí)項目中,一些GUI工具有非常漂亮的用戶界面,例如Jupyter Notebook。這些工具在機(jī)器學(xué)習(xí)的工作中占有一席之地。但是,GUI工具不太適合本文討論的原則。命令行工具非常適合處理在后臺運行的任務(wù),并且可以輕松地滿足我們上述的所有原則。而一般的GUI則會妨礙這些原則。

正如本文中描述的一樣,我們可以從常規(guī)軟件工程中借用很多工具和實踐方式。但是,機(jī)器學(xué)習(xí)項目的特殊性決定了我們需要用到更適合其目標(biāo)的工具。這些有價值的工具包括:MLFlow,DVC,ModelDb,Git-LFS等等。

相關(guān)報道:https://dev.to/robogeek/principled-machine-learning-4eho

【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)文章,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】

     大數(shù)據(jù)文摘二維碼

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

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2012-07-19 10:03:32

2019-07-21 20:08:50

工具代碼開發(fā)

2023-05-08 08:49:32

JavaLambda表達(dá)式

2024-11-12 16:28:34

2017-08-25 14:05:01

機(jī)器學(xué)習(xí)算法模型

2010-04-23 22:06:13

機(jī)房監(jiān)控軟件Mocha BSM摩卡軟件

2023-11-02 16:51:07

Python代碼

2021-06-10 10:33:22

Jenkins持續(xù)集成工具自動化

2020-03-04 14:05:35

戴爾

2024-04-28 10:28:11

lodashnum排序

2019-09-18 17:35:52

2022-08-28 10:08:53

前端代碼前端

2019-09-23 10:59:31

機(jī)器學(xué)習(xí)算法編程

2019-09-23 11:17:46

機(jī)器學(xué)習(xí)數(shù)據(jù)技術(shù)

2017-04-05 06:40:32

科技新聞早報

2020-01-20 14:30:39

HTTP概念標(biāo)頭

2025-04-02 08:47:23

DOM文檔結(jié)構(gòu)API

2025-07-29 08:05:37

2023-01-05 07:55:59

Zookeeper服務(wù)注冊

2015-07-20 15:24:44

Linux工具截圖
點贊
收藏

51CTO技術(shù)棧公眾號

丰满的护士2在线观看高清| 久久这里只有精品9| av综合网站| 国产成人精品亚洲777人妖| 国语自产在线不卡| 国产精品20p| 日韩一区免费| 色婷婷狠狠综合| 国产精品88久久久久久妇女 | 欧美性大战久久久久久久| 男女啪啪的视频| 午夜影院免费体验区| 久久99热99| 午夜精品一区二区三区av| 四季av中文字幕| 红杏成人性视频免费看| 欧美日韩一级大片网址| 日韩极品视频在线观看 | 国产伦精品一区二区三区在线播放| 日韩欧美有码在线| 8x8x华人在线| 国产www.大片在线| 成人免费高清视频在线观看| 国产精品美女www| 日本特黄特色aaa大片免费| 日韩一区二区在线| 日韩精品一区二区视频| av在线天堂网| 9999精品视频| 精品视频一区 二区 三区| 欧美色图色综合| 欧洲中文在线| 国产精品传媒入口麻豆| 日韩av大全| 蜜桃视频在线播放| 99麻豆久久久国产精品免费| 91精品久久久久久蜜桃| 一级片aaaa| 免费观看在线综合| 日本不卡高字幕在线2019| 久久精品欧美一区二区| 午夜日韩视频| 久久躁狠狠躁夜夜爽| 91麻豆精品国产91久久综合| 亚州综合一区| 日韩精品在线视频观看| 北岛玲一区二区| 国偷自产av一区二区三区| 日韩午夜中文字幕| 日韩不卡的av| 嫩呦国产一区二区三区av| 欧美精品一二三区| 日本高清一区二区视频| 日韩大陆av| 欧美一区二区视频网站| 奇米777在线| 亚洲无线观看| 精品裸体舞一区二区三区| 韩国三级与黑人| 51精品国产| 亚洲福利精品在线| 91丝袜在线观看| 伊人成综合网伊人222| 亚洲日韩中文字幕| 极品蜜桃臀肥臀-x88av| 91麻豆国产自产在线观看亚洲| 日韩中文有码在线视频| 国产第一页浮力| 国自产拍偷拍福利精品免费一| 欧美激情亚洲自拍| 日韩少妇裸体做爰视频| 欧美亚洲网站| 国产成人avxxxxx在线看| 国产主播第一页| 精品一区在线看| www 成人av com| 天堂av电影在线观看| 99久久er热在这里只有精品66| 欧洲精品码一区二区三区免费看| 福利视频在线播放| 亚洲日本韩国一区| 91网站在线观看免费| 99久久精品免费看国产小宝寻花| 狠狠综合久久av一区二区小说| 免费看污黄网站| 免费精品一区| 亚洲欧美国产精品久久久久久久| 天美传媒免费在线观看| 欧美激情一级片一区二区| 8x海外华人永久免费日韩内陆视频| 成人免费一级片| 国产成人亚洲综合色影视| 精品亚洲第一| 免费av在线网址| 调教+趴+乳夹+国产+精品| 五月天婷婷激情视频| 欧美专区视频| 亚洲欧美国产精品| 久久久www成人免费毛片| 亚洲综合国产| 亚洲综合中文字幕在线观看| 你懂的在线播放| 亚洲精品视频在线看| 国产淫片av片久久久久久| 四虎地址8848精品| 日韩成人中文字幕在线观看| 亚洲精品一区二区三区在线播放| 日韩午夜一区| 91青草视频久久| 精品视频二区| 香蕉加勒比综合久久| 中文字幕久久av| 香蕉视频一区二区三区| 欧美激情视频在线| 亚洲在线免费观看视频| 97超碰欧美中文字幕| 中文字幕av日韩精品| 天堂中文最新版在线中文| 欧美一区二区人人喊爽| 快灬快灬一下爽蜜桃在线观看| 亚洲高清电影| 亚洲一区二区中文| 91看片在线观看| 欧美日韩中文字幕在线视频| 成年人看片网站| 香蕉精品视频在线观看| 国产精品美女在线| 欧美拍拍视频| 欧美午夜激情视频| 中文字幕人妻一区二区三区| 欧美福利影院| 成人欧美一区二区三区在线湿哒哒| 成人网视频在线观看| 精品国产91久久久久久| 丰满人妻一区二区三区免费视频棣 | 亚洲成人中文| 999在线观看免费大全电视剧| 午夜在线免费观看视频| 欧美艳星brazzers| 国产特黄级aaaaa片免| 中文亚洲免费| 国产日韩欧美一区二区三区四区| 欧美男男video| 精品少妇一区二区| 欧美极品视频在线观看| 国产美女久久久久| 异国色恋浪漫潭| 久久99成人| 欧美激情乱人伦| 亚洲精品久久久狠狠狠爱| 亚洲资源中文字幕| 东京热av一区| 日韩午夜免费视频| 欧美精品免费观看二区| 日韩欧美看国产| 一本色道久久88精品综合| 久草热在线观看| 中文无字幕一区二区三区 | 国产v综合v亚洲欧| 国产手机免费视频| 天堂网av成人| 国产精品18久久久久久首页狼| 黄视频在线观看免费| 欧美中文字幕久久| 欧美性生给视频| 国产精品一区二区男女羞羞无遮挡| 老司机午夜网站| 在线观看视频一区二区三区| 97视频人免费观看| 欧美扣逼视频| 欧美高清精品3d| 久久久91视频| 久久久久久一二三区| 日本xxxx黄色| 欧美日韩岛国| 欧美污视频久久久| 在线不卡一区| 欧美极品少妇xxxxⅹ喷水| 青青草免费在线| 欧美一区二区三区在线看| 久热这里只有精品在线| 久久女同性恋中文字幕| 亚洲a级黄色片| 韩日视频一区| 日韩精品不卡| 亚洲第一二区| 国产成人高清激情视频在线观看| 日本高清视频在线观看| 精品国产一区二区精华| 国产午夜麻豆影院在线观看| 亚洲欧美电影一区二区| 亚洲精品女人久久久| 久久精品99久久久| 蜜臀av无码一区二区三区| 欧美影院三区| 国产女人水真多18毛片18精品| 777午夜精品电影免费看| 久久99精品久久久久久青青91| 青青青手机在线视频观看| 91麻豆精品91久久久久久清纯| 黄网在线观看视频| 亚洲色图制服丝袜| asian性开放少妇pics| 国产剧情av麻豆香蕉精品| 日韩欧美在线免费观看视频| 在线欧美三区| 亚洲小视频在线播放| 精品国产乱码久久久久久果冻传媒 | 亚洲精品不卡在线观看 | 99re8这里有精品热视频8在线| 国产精品777| jizz一区二区三区| 久久国产一区二区三区| 美国一级片在线免费观看视频 | 亚洲免费观看在线| 久久精品久久综合| 午夜肉伦伦影院| 国内在线观看一区二区三区| youjizz.com亚洲| 欧美日韩水蜜桃| 免费看成人午夜电影| 澳门成人av| 亚洲xxxxx性| 欧美h在线观看| 99久久久成人国产精品| 欧美性视频网站| www在线看| 久久国产精品偷| 麻豆网站视频在线观看| 一区二区三区黄色| 久久久pmvav| 日韩国产激情在线| 人妻与黑人一区二区三区| 日韩亚洲国产中文字幕欧美| 国产免费黄色片| 欧美日韩国产另类不卡| 在线观看免费视频a| 日本道精品一区二区三区| 一区二区三区福利视频| 精品久久久久久国产91| 97超碰人人干| 午夜精品久久久久久久 | 91成人免费| 亚洲一区精彩视频| 日韩精品一区二区久久| 亚洲国产精品视频一区| 日韩免费高清| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产成人一区二区三区影院| 欧美另类网站| 欧美极品在线观看| 清纯唯美一区二区三区| 欧美日韩国产一区二区三区不卡| 日韩高清国产精品| 不卡一区2区| 亚洲国产午夜伦理片大全在线观看网站| 欧美美女一区| 精品久久免费观看| 欧美~级网站不卡| 成人网站免费观看入口| 亚洲美女一区| 精品久久久久久无码国产| 男女视频一区二区| 久久6免费视频| 粉嫩av亚洲一区二区图片| 日韩成人av影院| 久久综合色婷婷| 亚洲ⅴ国产v天堂a无码二区| 亚洲欧美日韩中文播放| 精品在线视频观看| 精品欧美国产一区二区三区| 亚洲成人av网址| 91精品国产福利在线观看| 亚洲卡一卡二卡三| 亚洲精品资源在线| 免费av网站在线看| 欧美国产视频一区二区| 小早川怜子影音先锋在线观看| 国产精品久久久久久久7电影| 经典三级久久| 精品蜜桃一区二区三区| 日韩精品免费一区二区三区| 肉大捧一出免费观看网站在线播放 | 久久精品亚洲热| 俺来也官网欧美久久精品| 国产99久久精品一区二区永久免费| 亚洲视频自拍| 国产欧美一区二区三区另类精品 | 可以在线看黄的网站| 在线看片成人| 国产精品一区二区小说| 粉嫩蜜臀av国产精品网站| 在线免费观看视频| 一区二区三区四区不卡在线| 五月婷婷激情网| 777午夜精品免费视频| 色网站免费观看| 按摩亚洲人久久| 在线看的毛片| 91精品久久香蕉国产线看观看| 亚洲伊人春色| 国产高清不卡无码视频| 日本欧美加勒比视频| 老熟女高潮一区二区三区| 久久精品人人做人人综合 | 亚洲 小说 欧美 激情 另类| 亚洲色图欧洲色图| 天堂中文字幕在线观看| 91精品国产91久久久久久一区二区| 毛片免费在线播放| 久久久久久久久久久久久久久久久久av| 欧美成人精品三级网站| 国产在线观看一区| 欧美在线国产| 国产色视频在线播放| 97久久超碰精品国产| 欧美精品99久久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日韩av成人网| 国产日韩欧美电影| 日本一二三区视频| 日韩一区二区三区免费看 | 欧美日韩激情| 各处沟厕大尺度偷拍女厕嘘嘘 | 欧美做受高潮6| 午夜精品影院在线观看| 国产婷婷一区二区三区久久| 一区二区三区黄色| 另类专区亚洲| 久久人人97超碰人人澡爱香蕉| 激情亚洲成人| 精品人妻一区二区乱码| 国产精品萝li| 一区二区视频网| 中文字幕日韩av综合精品| 手机在线观看av网站| 国产91视觉| 欧美成人午夜| 性生活一级大片| 亚洲精品你懂的| 成人免费一区二区三区| 国产亚洲激情在线| 日韩网站中文字幕| 人禽交欧美网站免费| 日韩经典中文字幕一区| 女人十八毛片嫩草av| 欧美色中文字幕| 亚洲乱亚洲乱妇| 成人h猎奇视频网站| 亚洲天堂一区二区三区四区| 日韩精品视频网址| 一区二区三区在线观看动漫| www.日本在线观看| 色综合色综合网色综合| av成人综合| 无码精品a∨在线观看中文| 99精品久久99久久久久| 99精品人妻国产毛片| 一区二区三欧美| 亚洲va在线va天堂va偷拍| ●精品国产综合乱码久久久久| 91欧美日韩麻豆精品| 欧美成人第一页| 成人福利一区| av之家在线观看| 国产日韩欧美一区二区三区乱码| 中文字幕+乱码+中文字幕明步| 俺也去精品视频在线观看| 日本免费一区二区视频| 人妻av中文系列| 国产婷婷一区二区| 国产精品欧美久久久久天天影视| 欧美另类在线观看| 美女av一区| 国产91色在线观看| 亚洲精品一二三四区| 亚洲日本香蕉视频| 国产精品久久久久久久app| 一区二区三区国产精华| 伊人网综合视频| 欧美日韩成人在线一区| 欧美1—12sexvideos| 欧美久久电影| 国产激情视频一区二区三区欧美| 日韩久久精品视频| 中文字幕精品av| 国产成人在线中文字幕| 日日躁夜夜躁aaaabbbb| 亚洲国产日产av| 国产高清视频在线| 官网99热精品| 蜜桃av一区二区| 1级黄色大片儿| 日韩在线资源网| 亚洲精品aaaaa| www.偷拍.com| 在线精品视频一区二区| 伦理在线一区| 在线国产99| 国产偷v国产偷v亚洲高清|