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

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型 原創 精華

發布于 2024-7-4 13:41
瀏覽
0收藏

編者按: 如何更好地評估和比較不同版本的大語言模型?傳統的學術基準測試固然重要,但往往難以全面反映模型在實際應用場景中的表現。在此背景下,本文作者別出心裁,通過讓 Llama-2 和 Llama-3 模型進行井字游戲對決,為我們提供了一個新穎而有趣的模型評估視角。

此文不僅展示了一種創新的模型比較方法,更揭示了當前大語言模型在處理看似簡單的空間邏輯任務時所面臨的挑戰。讓我們得以一窺不同參數規模模型的表現差異,以及新一代模型相較前代的進步與不足。

尤為值得關注的是,即便是參數量達到 70B 的大模型,在面對井字游戲這樣的基礎任務時仍會出現一些令人意外的錯誤。這一發現不僅為大語言模型的能力邊界劃定提供了新的參考,也為未來模型的優化方向指明了道路。

我們希望這篇文章能夠啟發讀者思考:在評估人工智能模型時,我們是否應該更多地關注那些看似簡單卻能深入考察模型認知能力的任務?同時,如何設計更多類似“井字游戲”的“微型基準測試“,以更加全面而直觀地評估模型性能?


作者 | Dmitrii Eliuseev

編譯 | 岳揚


Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型-AI.x社區

Image by Solstice Hannan, Unsplash(https://unsplash.com/@darkersolstice)


就在我撰寫這篇文章的大約一周前,Meta 推出了新的開源模型 Llama-3[1] 。他們宣稱這是“當前在 8B 與 70B 參數量級下的最好模型”。通過 HuggingFace 平臺的模型頁面[2]可以看到,Llama-3 8B 在 MMLU(Massive Multitask Language Understanding) 基準測試上的表現,以 66.6 的得分超越了 Llama-2 7B 的 45.7 ;而在 CommonSense QA(dataset for commonsense question answering)上進行評估,Llama-3 同樣領先,分別以 72.6 和 57.6 的得分戰勝了對手。有一款經過特殊指令數據微調(instruction-tuned)的 Llama-3 8B 模型尤其值得一提,在數學基準測試中的表現得分從 3.8 躍升至 30.0,這一進步令人印象深刻。


通過學術基準測試(Academic benchmarks)進行大模型評估固然很重要,但親眼見證它們的實際表現豈不更加直觀且更有趣?答案是肯定的,而且這種體驗往往妙趣橫生。設想一下,如果讓兩個模型進行一場經典的井字棋對決(tic-tac-toe game),勝負究竟如何?在接下來的游戲環節中,我將全面測試 7B、8B以及70B 等參數規格的模型。與此同時,我還會記錄下模型的性能指標及系統配置要求。

話不多說,讓我們即刻啟程,一探究竟!

01 加載模型

為了全面測試這些模型,我選擇使用 Python 庫Llama-cpp[3] 進行測試,該工具的一大優點在于其既能適應 CPU 環境,也能在 GPU 上高效運行。我們需要并行運行兩個 LLM。好消息是,無論是 7B 還是 8B 的模型,都能在 Google Colab 的 16GB GPU 環境中順暢運行。然而,當面對 70B 參數級別的龐大模型時,我們不得不退而求其次,轉而使用 CPU 進行測試,因為即便是頂級的 NVIDIA A100 顯卡,其內存容量也難以承擔起同時運行兩個此類巨無霸模型的重任。

首先需要我們先動手安裝 Llama-cpp,緊接著下載 7B 與 8B 參數級別的這兩個模型。至于 70B 參數級別的模型,其操作流程基本一致,唯一的區別僅在于替換其下載鏈接而已。

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python -U
!pip3 install huggingface-hub hf-transfer sentence-transformers


!export HF_HUB_ENABLE_HF_TRANSFER="1" && huggingface-cli download TheBloke/Llama-2-7B-Chat-GGUF llama-2-7b-chat.Q4_K_M.gguf --local-dir /content --local-dir-use-symlinks False
!export HF_HUB_ENABLE_HF_TRANSFER="1" && huggingface-cli download QuantFactory/Meta-Llama-3-8B-Instruct-GGUF Meta-Llama-3-8B-Instruct.Q4_K_M.gguf --local-dir /content --local-dir-use-symlinks False

模型下載完成后,接下來就需要正式啟動這些模型了:

from llama_cpp import Llama


llama2 = Llama(
      model_path="/content/llama-2-7b-chat.Q4_K_M.gguf",
      n_gpu_layers=-1,
      n_ctx=1024,
      echo=False
)
llama3 = Llama(
      model_path="/content/Meta-Llama-3-8B-Instruct.Q4_K_M.gguf",
      n_gpu_layers=-1,
      n_ctx=1024,
      echo=False
)

接下來,我們著手創建一個函數,用于處理和執行各種提示詞信息:

def llm_make_move(model: Llama, prompt: str) -> str:
    """ Call a model with a prompt """
    res = model(prompt, stream=False, max_tokens=1024, temperature=0.8)
    return res["choices"][0]["text"]

02 Prompts

現在,我們來編寫代碼實現井字游戲(Tic-Tac-Toe)。在棋盤上交替放置“X”和“O”,首位成功在任意一行、一列或對角線上連成一線的玩家即為勝者:

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型-AI.x社區

Image source Wikipedia(https://en.wikipedia.org/wiki/Tic-tac-toe)

正如我們所見,這個游戲對于人類來說非常簡單,但對語言模型而言可能頗具挑戰;要走出正確的一步棋,需要理解棋盤空間、物體之間的關系,甚至還會涉及一些簡單的數學知識。

首先,我們將棋盤編碼為一個二維數組。同時也會創建一個函數方法用于將棋盤轉換成字符串形式:

board = [["E", "E", "E"],
         ["E", "E", "E"],
         ["E", "E", "E"]]

def board_to_string(board_data: List) -> str:
    """ Convert board to the string representation """
    return "\n".join([" ".join(x) for x in board_data])

輸出結果如下:

E E E
E E E
E E E

現在,我們可以創建模型提示詞(model prompts)了:

sys_prompt1 = """You play a tic-tac-toe game. You make a move by placing X, 
                 your opponent plays by placing O. Empty cells are marked 
                 with E. You can place X only to the empty cell."""
sys_prompt2 = """You play a tic-tac-toe game. You make a move by placing O, 
                 your opponent plays by placing X. Empty cells are marked 
                 with E. You can place O only to the empty cell."""
game_prompt = """What is your next move? Think in steps. 
                 Each row and column should be in range 1..3. Write
                 the answer in JSON as {"ROW": ROW, "COLUMN": COLUMN}."""

在這里,我為模型 1 和模型 2 分別創建了兩個提示詞(prompt)。我們可以看到,這兩個句子幾乎是相同的。唯一不同的是,第一個模型在“棋盤”上放置“X”,而第二個模型則放置“O”。

Llama-2 和 Llama-3 的提示詞格式有所不同:

template_llama2 = f"""<s>[INST]<<SYS>>{sys_prompt1}<</SYS>>
Here is the board image:
__BOARD__\n
{game_prompt}
[/INST]"""

template_llama3 = f"""<|begin_of_text|>
<|start_header_id|>system<|end_header_id|>{sys_prompt2}<|eot_id|>
<|start_header_id|>user<|end_header_id|>
Here is the board image:
__BOARD__\n
{game_prompt}
<|eot_id|>
<|start_header_id|>assistant<|end_header_id|>"""

當然,我們可以創建兩個函數方法來利用這些提示詞(prompts),其中一個函數方法針對 Llama-2 ,另一個則針對 Llama-3 。

def make_prompt_llama2(board: List) -> str:
    """ Make Llama-2 prompt """
    return template_llama2.replace("__BOARD__", board_to_string(board))


def make_prompt_llama3(board: List) -> str:
    """ Make Llama-3 prompt """
    return template_llama3.replace("__BOARD__", board_to_string(board))

03 Coding the Game

我們已經為構建該井字游戲(Tic-Tac-Toe)準備好了所有的提示詞信息,接下來該進入此游戲的編碼階段了。在某一個提示詞中,我要求模型以 JSON 格式提供模型響應。在實際操作中,模型可以回答這個問題:

My next move would be to place my X in the top-right corner, on cell (3, 1).
{
"ROW": 3,
"COLUMN": 1
}

現在,我們開始著手設計一個函數方法,用于從這類字符串中抽取出 JSON 數據:

def extract_json(response: str) -> Optional[dict]:
    """ Extract dictionary from a response string """
    try:
        # Models sometimes to a mistake, fix: {ROW: 1, COLUMN: 2} => {"ROW": 1, "COLUMN": 2}
        response = response.replace('ROW:', '"ROW":').replace('COLUMN:', '"COLUMN":')
        # Extract json from a response
        pos_end = response.rfind("}")
        pos_start = response.rfind("{")
        return json.loads(response[pos_start:pos_end+1])
    except Exception as exp:
        print(f"extract_json::cannot parse output: {exp}")
    return None

結果發現,LLaMA-2 生成的模型響應并非總是有效的 JSON 格式;它經常會生成類似 “{ROW: 3, COLUMN: 3}” 這樣的模型響應。如上述代碼塊所示,在這種情況下,我會補全字符串中的缺失的引號,確保其格式正確。

獲得棋盤的行數和列數后,我們就能對該棋盤進行更新了:

def make_move(board_data: List, move: Optional[dict], symb: str):
    """ Update board with a new symbol """
    row, col = int(move["ROW"]), int(move["COLUMN"])
    if 1 <= row <= 3 and 1 <= col <= 3:
        if board_data[row - 1][col - 1] == "E":
            board_data[row - 1][col - 1] = symb
        else:
            print(f"Wrong move: cell {row}:{col} is not empty")
    else:
        print("Wrong move: incorrect index")

在更新棋盤狀態后,下一步應當判斷游戲是否達到結束條件。

def check_for_end_game(board_data: List) -> bool:
    """ Check if there are no empty cells available """
    return board_to_string(board_data).find("E") == -1

def check_for_win(board_data: List) -> bool:
    """ Check if the game is over """
    # Check Horizontal and Vertical lines
    for ind in range(3):
        if board_data[ind][0] == board_data[ind][1] == board_data[ind][2] and board_data[ind][0] != "E":
            print(f"{board_data[ind][0]} win!")
            return True
        if board_data[0][ind] == board_data[1][ind] == board_data[2][ind] and board_data[0][ind] != "E":
            print(f"{board_data[0][ind]} win!")
            return True
    # Check Diagonals
    if board_data[0][0] == board_data[1][1] == board_data[2][2] and board_data[1][1] != "E" or \
       board_data[2][0] == board_data[1][1] == board_data[0][2] and board_data[1][1] != "E":
        print(f"{board_data[1][1]} win!")
        return True
    return False

在此代碼邏輯中,會循環檢查棋盤的水平線、垂直線和對角線,判斷是否出現勝利的一方。也許可能存在更為簡潔的解法,但當前這種方法足以應對目前的需求。

現在,所有必要組件都已準備完畢。接下來,我們將這些組件整合在一起:

num_wins1, num_wins2 = 0, 0
times_1, times_2 = [], []


def run_game():
    """ Run a game between two models """
    board = [["E", "E", "E"],
             ["E", "E", "E"],
             ["E", "E", "E"]]

    moves_limit = 20
    for step in range(moves_limit):
        print(f"Step {step+1}")

        # Move: Model-1
        t_start = time.monotonic()
        prompt = make_prompt_llama2(board)
        result_str = llm_make_move(llama2, prompt)
        times_1.append(time.monotonic() - t_start)

        new_data = extract_json(result_str)
        if new_data is not None:
            make_move(board, new_data, symb="X")
            if check_for_win(board):
                print('**Model 1 Won**')
                num_wins1 += 1
                break
            if check_for_end_game(board):
                break

        # Move: Model-2
        t_start = time.monotonic()
        prompt = make_prompt_llama3(board)
        result_str = llm_make_move(llama3, prompt)
        times_2.append(time.monotonic() - t_start)

        new_data = extract_json(result_str)
        if new_data is not None:
            make_move(board, new_data, symb="O")
            if check_for_win(board):
                print('**Model 2 Won**')
                num_wins2 += 1
                break
            if check_for_end_game(board):
                break
        print()

同時,我還記錄了每個步驟的執行耗時,以及各個模型在游戲中的獲勝次數。


04 Results

說到實驗結果,確實很有趣。

對于參數規模為 7B 和 8B 的模型,完成井字游戲似乎比較有挑戰性。7B 的 Llama-2 模型雖然對游戲規則有所認知,但它卻沒能準確理解棋盤坐標的含義,導致常常將“X”標記置于不當之處。

下面是一些具體的 Prompt 與模型響應示例:

>>> Prompt:

<s>[INST]<<SYS>>You play a tic-tac-toe game. You make a move by placing X, 
your opponent plays by placing O. Empty cells are marked with E.
You can place X only to the empty cell.<</SYS>>
Here is the board image:
X X O
X O E
E E E

What is your next move? Think in steps. 
Each row and column should be in range 1..3. 
Write the answer in JSON as {"ROW": ROW, "COLUMN": COLUMN}.
[/INST]

>>> Response:

Since there are no empty cells on the board, I will place my X in the 
center cell: { "ROW": 2, "COLUMN": 1 }.

根據上文的響應內容,我們可以看到,這段模型響應中存在多個錯誤。首先,棋盤上還有許多空位可選;其次,坐標 (2,1) 并不是棋盤的中心;最后,給出的殘局中,初始狀態那個位置本身就有棋子,并非空缺。

相比之下,參數規模為 70B 的 LLaMA-2 模型整體表現更佳,然而它也并非完美無瑕,依舊存在不少錯誤。以下為一個極具代表性的 prompt 與模型響應案例:

>>> Prompt:

<s>[INST]<<SYS>>You play a tic-tac-toe game. You make a move by placing X, 
your opponent plays by placing O. Empty cells are marked with E.
You can place X only to the empty cell.<</SYS>>
Here is the board image:
O E E
E X E
E E E

...

>>> Response:

My next move would be to place my X in the center cell, which is empty.
Here is the updated board:

O E E
E X X
E E E

JSON representation of my move: {"ROW": 2, "COLUMN": 2}

可以看到,參數規格為 70B 的模型確實找到了“中心”位置,但相關“棋子”?的位置放置決策卻是錯的;該模型似乎并未“意識到”中間的格子其實已經被占用了。該模型甚至嘗試重新“描繪”棋盤,但這番“修改”同樣也是錯誤的。

令人啼笑皆非的是,ChatGPT 3.5 面對同一問題也給出了錯誤解答,同樣得出了中心位置為 {"ROW": 2, "COLUMN": 2} 的結論。不過,LLaMA-3 70B 卻成功避免了這個陷阱。即便如此,它還是會犯類似的錯誤,偶爾會在已經有“棋子”的格子里再次放置“棋子”。遺憾的是,我沒有統計每款模型的具體錯誤次數,這是一個值得后續關注的改進點。

如果用柱狀圖來展示,7B 和 8B 模型的表現數據大致如下:

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型-AI.x社區

Game score for 7B and 8B models, Image by author

結果顯而易見:Llama-3 以 10:0 的大比分獲勝!

同時,我們可以觀察到兩組模型在搭載 16 GB NVIDIA T4 GPU 的設備上的推理耗時情況:

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型-AI.x社區

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型-AI.x社區

Inference time for 7B and 8B models, Image by author

略有不足的是,Llama-3 的運行速度相比前一代模型略慢(分別為 2.5 秒和 4.3 秒)。然而實際上,4.3 秒的響應時間已經足夠優秀了,因為大多數情況下會采用流式處理(streaming),并且用戶通常也不會期待立刻獲得即時回答。

至于參數規格為 70B 的 Llama-2 模型,它的表現更佳,能夠勝出兩次,但即便如此,在絕大多數情況下,Llama-3 仍然占據了上風。最終,在推理速度這方面,Llama-3 以 8:2 的比分獲勝!

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型-AI.x社區

Game score for 70B models, Image by author

使用 CPU 進行大模型的推理運算時,由于 CPU 的計算能力和并行處理能力相對有限,其推理速度自然不會很快:

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型-AI.x社區

Inference time, Image by author

完成十局游戲大約會耗費一個小時。雖然這個速度對于生產環境來說并不理想,但在測試階段還可以吧。有一點很有趣,Llama-cpp 采用了一種內存映射文件(memory-mapped file)的方式來加載模型,即便同時處理兩個 70B 參數級別的模型,其內存占用也控制在了 12GB 以內。這就表明,在僅配備 16GB RAM 的個人電腦上,我們同樣能夠順利地測試兩個 70B 模型(可惜這一招在 GPU 上行不通)。


05 Conclusion

在本文中,我安排兩組語言模型進行了一場別開生面的井字游戲對戰。有趣的是,這個看似簡單的“基準測試”實際上極具挑戰性。其考驗的不僅僅是模型對游戲規則的掌握,還涉及到了坐標系統以及使用字符串形式表達“空間”和“抽象思維”的能力,以此模擬二維棋盤。

從比賽結果來看,LLaMA-3 明顯是贏家。顯然,這款模型的表現更為出色,但我必須承認,兩款模型都在游戲中犯了很多錯誤。這一現象引人深思,暗示著即便是當前的大語言模型,在面對這個小巧卻非正式的“基準測試”時也會感到棘手,本文提出的 “Tic-Tac-Toe Battle” 基準測試無疑可為未來其他大模型的測試提供參考。


文中鏈接

[1]??https://ai.meta.com/blog/meta-llama-3/??

[2]??https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct??

[3]??GitHub - abetlen/llama-cpp-python: Python bindings for llama.cpp??


Thanks for reading!


————

Dmitrii Eliuseev

Python/IoT developer and data engineer, data science and electronics enthusiast

??https://www.linkedin.com/in/dmitrii-eliuseev/??


原文鏈接:

??https://towardsdatascience.com/llama-2-vs-llama-3-a-tic-tac-toe-battle-between-models-7301962ca65d??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
成人黄页毛片网站| 久久综合欧美| 一区二区不卡在线播放| 国产精品久久精品国产| 欧美一级淫片免费视频黄| 精品久久电影| 日韩写真欧美这视频| 欧美日本视频在线观看| www.久久热.com| 国产精品综合网| 国产69精品久久久久久| 五月天婷婷丁香网| 国产精品乱战久久久| 在线区一区二视频| 人妻互换免费中文字幕| 日本福利片高清在线观看| 九九国产精品视频| 91精品国产高清自在线| 美国黄色片视频| 亚洲毛片免费看| 欧美一级免费大片| 日本xxxxxxx免费视频| 香蕉成人app免费看片| 久久精品免视看| 成人av影视在线| 在线观看免费中文字幕| 国产日韩欧美三区| 久久99热精品| 亚洲区一区二区三| 精品国产一级毛片| 日韩精品极品在线观看| 原创真实夫妻啪啪av| 99久久伊人| 欧美日韩精品国产| 国产aaa免费视频| 成人精品视频久久久久| 免费在线观看h片| 精品国产中文字幕第一页 | 伊人男人综合视频网| 精品国产乱码久久久久夜深人妻| 久久不卡日韩美女| 欧美性极品少妇| 欧美 日本 亚洲| 欧美精品videosex| 自拍偷自拍亚洲精品播放| 日韩欧美国产二区| 毛片网站在线观看| 91丨porny丨首页| 国产女人水真多18毛片18精品| 国产巨乳在线观看| 丝袜国产日韩另类美女| 欧洲美女免费图片一区| 六月丁香在线视频| 在线亚洲自拍| 91精品国产精品| 国产精品a成v人在线播放| 重囗味另类老妇506070| 久久精品欧美视频| 暗呦丨小u女国产精品| 日韩欧美综合| 日韩在线视频免费观看| 日韩av毛片在线观看| 久久影院100000精品| 在线日韩av观看| 人成免费在线视频| 日韩片欧美片| 欧美xxxx14xxxxx性爽| 精品一区在线观看视频| 欧美 日韩 国产一区二区在线视频| 久久精品夜夜夜夜夜久久| 最新av电影网站| 中文在线日韩| 欧美精品久久久久久久免费观看| 日本熟妇成熟毛茸茸| av成人国产| 国产91精品在线播放| 中文文字幕一区二区三三| 另类调教123区| 亚洲一区二区三区视频| 亚洲国产中文字幕在线| 91热门视频在线观看| 日韩资源av在线| 欧美一区二区三区在线观看免费| 亚洲日本一区二区三区| 国产69精品久久久久999小说| 玖玖在线播放| 欧美专区日韩专区| www.欧美激情.com| 伦理一区二区三区| 中文字幕亚洲色图| 国产精品成人免费观看| 国产日韩1区| 成人国产精品色哟哟| 亚洲va欧美va| 久久精品欧美日韩精品| 青青视频免费在线观看| 国产美女高潮在线| 欧美日韩不卡一区二区| 大尺度在线观看| 欧美综合在线视频观看| 欧美激情欧美激情| 亚洲天堂视频在线播放| 国产经典欧美精品| 欧美一区三区二区在线观看| 黄色精品在线观看| 精品美女永久免费视频| 手机看片一级片| 韩国女主播一区二区三区| 中文字幕亚洲欧美| 日本一级片免费看| 狠狠久久亚洲欧美| 日本亚洲自拍| 丰满大乳少妇在线观看网站| 欧美日韩亚洲丝袜制服| 大尺度做爰床戏呻吟舒畅| 日韩精品免费| 欧美在线观看网址综合| 国产美女www爽爽爽视频| 久久天天做天天爱综合色| 青青草视频国产| 99精品在免费线偷拍| 日韩成人在线视频网站| 国产精品成人免费观看| 蜜桃一区二区三区在线观看| 久久99精品久久久久久秒播放器 | 久久九九国产精品怡红院| 亚洲 欧美 日韩 综合| 国产激情偷乱视频一区二区三区| 亚洲春色在线视频| 日韩欧美另类一区二区| 亚洲丁香婷深爱综合| 三级影片在线看| 激情综合网天天干| 亚洲韩国在线| 亚洲高清黄色| 亚洲精品少妇网址| 日韩av一二三区| 国产 欧美在线| 蜜桃视频成人在线观看| 欧美一级做a| 最近2019中文免费高清视频观看www99| 欧美bbbbbbbbbbbb精品| av在线综合网| www.夜夜爱| www.爱久久| 九九热这里只有精品6| 亚洲天堂网在线观看视频| 国产日韩欧美a| 成人3d动漫一区二区三区| 无码日韩精品一区二区免费| 97在线精品视频| 天堂在线视频网站| 欧美日韩国产影院| 久久久久9999| 美女国产一区| 日本午夜精品一区二区| 欧美日韩五码| 在线观看久久久久久| 中文字幕人妻色偷偷久久| 欧美极品少妇xxxxⅹ高跟鞋| 91在线视频观看免费| 欧美第一精品| 亚洲专区国产精品| 毛片网站在线看| 亚洲高清不卡av| 亚洲第一在线播放| 久久久不卡网国产精品二区| 中文字幕天天干| 国产高清一区二区| 亚洲一区免费网站| 男插女视频久久久| 亚洲激情第一页| 无码人妻精品一区二区| 国产精品乱子久久久久| av在线免费看片| 韩国一区二区三区在线观看| 国产在线视频欧美一区二区三区| 蜜桃麻豆影像在线观看| 亚洲欧美国产制服动漫| 中文字幕在线观看欧美| 亚洲日本在线视频观看| 中文字幕一区二区人妻电影丶| 国产日韩亚洲| 亚洲视频在线观看日本a| 成人豆花视频| 国内免费精品永久在线视频| 国产精品麻豆一区二区三区| 4438x亚洲最大成人网| 妺妺窝人体色www在线下载| 91丨国产丨九色丨pron| 99国产精品久久久久久| 影音先锋日韩资源| 亚洲春色在线视频| 91精品短视频| 国产精品免费久久久| 欧洲黄色一区| 亚洲深夜福利网站| av男人天堂网| 日本道精品一区二区三区| 欧美三级黄色大片| 91免费在线视频观看| 午夜视频在线网站| 国产亚洲激情| 青青草影院在线观看| 窝窝社区一区二区| 91青青草免费在线看| 88xx成人免费观看视频库| 久久99精品久久久久久青青91| 国产永久av在线| 精品乱人伦一区二区三区| 性高潮视频在线观看| 亚洲图片欧美视频| 国产精品视频在| 99久久综合色| 一本之道在线视频| 秋霞影院一区二区| 激情五月宗合网| 这里只有精品在线| 亚洲精品久久区二区三区蜜桃臀| 久久99国产精品久久99大师| 亚洲一区制服诱惑| 成人国产精选| 欧美综合一区第一页| 色av手机在线| www.亚洲男人天堂| 国产女主播在线写真| 亚洲国产精品人人爽夜夜爽| 99久久久国产精品无码免费| 欧美性欧美巨大黑白大战| 伊人手机在线视频| 亚洲.国产.中文慕字在线| 波多野结衣家庭教师| 国产精品色眯眯| 老头老太做爰xxx视频| 91在线小视频| 亚洲一区二区三区四区av| 国产精品性做久久久久久| 性生活免费在线观看| 日韩精品亚洲专区| 无码无遮挡又大又爽又黄的视频| 99精品视频免费观看| 成人性生活视频免费看| 欧美午夜国产| 欧美一二三不卡| 欧美一区二区三区另类| 这里只有精品66| 欧美高清视频手机在在线| 一区二区三区不卡在线| 成人久久久久| 亚洲国产午夜伦理片大全在线观看网站| 美女毛片一区二区三区四区| 久久久久久国产精品mv| 奇米影视777在线欧美电影观看| 国产另类自拍| 久久99精品国产自在现线| 精品不卡在线| 亚洲精品亚洲人成在线| 欧美日韩国产不卡在线看| 免费成人网www| 污视频在线免费观看一区二区三区 | 国产精品69av| 美女色狠狠久久| 国产精品直播网红| 亚洲毛片在线免费| 91在线观看免费高清完整版在线观看| 亚洲成人a级片| 99porn视频在线| 噜噜噜狠狠夜夜躁精品仙踪林| 久久riav二区三区| 久久av导航| 中文字幕成人一区| 国产精品99免费看| 玩弄中年熟妇正在播放| 日韩专区中文字幕一区二区| 午夜国产一区二区三区| 国产麻豆9l精品三级站| 99热超碰在线| 久久精品无码一区二区三区 | 一区二区三区精密机械公司| 精品一区在线视频| 五月天国产精品| 色老头在线视频| 欧美一区二区大片| 人妻妺妺窝人体色www聚色窝| 亚洲欧美一区二区三区情侣bbw| 9色在线观看| 欧美精品在线免费| 色是在线视频| 国产一区二区丝袜高跟鞋图片| 国产免费av国片精品草莓男男| 精品乱子伦一区二区三区| 久久一区二区中文字幕| 欧美成人精品免费| 日韩激情中文字幕| 久久黄色一级视频| 久久精品日产第一区二区三区高清版| 熟女av一区二区| 欧美午夜精品久久久久久久| 国产精品久久免费| 日韩精品欧美国产精品忘忧草| 天天在线视频色| 91成人在线视频| www.久久草.com| 欧美少妇一区| 国产一区激情| 亚洲一级片免费| 99久久免费精品高清特色大片| 日韩精品久久久久久久的张开腿让 | 欧美白人最猛性xxxxx69交| 精品影院一区| 久久久久久九九九| 日韩综合久久| 欧美大香线蕉线伊人久久国产精品 | 国产真实精品久久二三区| 欧美在线一级片| 亚洲欧美电影院| 国产精品第6页| 日韩av一区在线| 欧美24videosex性欧美| 91精品久久久久久| 国精一区二区| 一二三四视频社区在线| 国模少妇一区二区三区| 免费观看a级片| 精品久久久精品| 精品国产av一区二区三区| 中文字幕欧美视频在线| 偷拍自拍在线看| 国产精品入口免费| 中文字幕av亚洲精品一部二部| 亚洲欧洲日本精品| 国产欧美中文在线| 国产伦精品一区二区三区视频网站| 欧美sm极限捆绑bd| 性xxxfreexxxx性欧美| 91久久精品国产91久久| 大色综合视频网站在线播放| 人人爽人人av| 久久精品欧美一区二区三区不卡 | 欧美亚洲色综久久精品国产| 欧美午夜影院在线视频| 欧美一区二区三区激情| 欧美黑人一区二区三区| 欧一区二区三区| 99热一区二区三区| 国产中文字幕精品| 男人av资源站| 日韩一级片网址| 四虎影视成人| 成人av蜜桃| 亚洲美女啪啪| 中文在线永久免费观看| 午夜精品久久久久久久久久久 | 国产精品久久久免费视频| 精品久久久网站| japanese色国产在线看视频| 国产三级精品在线不卡| 国产人成精品一区二区三| 欧美成人午夜精品免费| 色综合天天综合网天天看片| 黄色片免费在线| 国产精品女主播视频| 欧美国产一级| 一卡二卡三卡四卡五卡| 亚洲一区二区五区| 天天操天天干天天| 国产91免费观看| 欧美顶级大胆免费视频| 一二三av在线| 午夜精品福利在线| 青春草在线观看| 国产欧美亚洲视频| 欧美精品日本| 欧美高清性xxxx| 欧美制服丝袜第一页| av中文字幕在线播放| 国产亚洲精品美女久久久m| 性欧美精品高清| 四虎影视一区二区| 欧美成人伊人久久综合网| 欧美aa免费在线| 午夜久久资源| 国产99久久久国产精品免费看| 国产无人区码熟妇毛片多| 中文字幕亚洲综合久久| 日韩免费成人| 久久精品香蕉视频| 亚洲精品综合在线| 老牛影视av牛牛影视av| 国产精品久久久久久亚洲调教| 欧美日韩国产欧| 国产特级黄色录像| 欧美一区三区四区| 中文字幕在线直播| 欧美 日韩 国产 在线观看| 99re成人精品视频| 国产一区二区三区黄片| 欧美一级电影久久| 亚洲精品二区三区| 亚洲精品国产精品国自产网站|