摘要:本文作者詳細(xì)描述了自己組裝深度學(xué)習(xí)服務(wù)器的過程,從主板電源機(jī)箱等的選取到部件的安裝,再到服務(wù)器的設(shè)置,可謂面面俱到。注本文旨在討論服務(wù)器設(shè)置及多用戶協(xié)作,部件組裝和軟件安裝過程是關(guān)于創(chuàng)建自己的的文章的簡化版本。
本文作者詳細(xì)描述了自己組裝深度學(xué)習(xí)服務(wù)器的過程,從 CPU、GPU、主板、電源、機(jī)箱等的選取到部件的安裝,再到服務(wù)器的設(shè)置,可謂面面俱到。作者指出,組裝者首先要弄清自己的需求,然后根據(jù)預(yù)算做出合理的選擇。
注:本文旨在討論服務(wù)器設(shè)置及多用戶協(xié)作,部件組裝和軟件安裝過程是 Slav Ivanov 關(guān)于創(chuàng)建自己的 DL Box 的文章(https://medium.com/m/global-identity?redirectUrl=https://blog.slavv.com/the-1700-great-deep-learning-box-assembly-setup-and-benchmarks-148c5ebe6415)的簡化版本。
我剛開始學(xué)習(xí) fast.ai 課程的第一部分——「Practical Deep Learning for Coders」,我想搭建自己的服務(wù)器來訓(xùn)練模型,作為使用 AWS p2 和存儲的升級。我將會使用更大的數(shù)據(jù)集,并且我不希望在訓(xùn)練模型時因為缺乏足夠的處理能力而等待數(shù)小時,因此構(gòu)建自己的 DL rig 服務(wù)器對我來說是一個不錯的選擇,而且從長遠(yuǎn)來看,它將為我節(jié)省大量的時間和金錢,而且可以積累組裝服務(wù)器的良好經(jīng)驗。
組裝
列出部件清單
在準(zhǔn)備部件之前,你要弄清楚自己到底想從機(jī)器中得到什么。個人而言,我想獲得以下改進(jìn):
比 Amazon p2 更加強(qiáng)大
容納額外 GPU、RAM、存儲及定制液體冷卻的空間
可以用很久的硬件
預(yù)算控制在 3000 美元左右
我用 pcpartpicker.com來細(xì)化各個部件,因為它可以將對比和組裝其它部件變得非常簡單,而且還具備很不錯的部件兼容性檢查器。我將詳細(xì)解釋選擇每個部件的原因以及它們?nèi)绾闻c整個系統(tǒng)協(xié)同工作。以下是我的服務(wù)器鏈接地址:https://pcpartpicker.com/b/CgpG3C。
GPU: GTX 1080 Ti Hybrid
因為你要使用顯卡來訓(xùn)練模型,所以這是組裝過程中最重要的一部分,因此,GPU 越強(qiáng)大,你處理大型數(shù)據(jù)集的速度就越快。GPU 內(nèi)存越大,處理能力也就越強(qiáng)(如:訓(xùn)練速度更快,批尺寸更大……)。我為自己的服務(wù)器選了兩塊這種顯卡,因為我在預(yù)算里為它們預(yù)留了空間,這樣我就能用其中一塊顯卡訓(xùn)練模型,讓另一個用戶在第二塊卡上訓(xùn)練其模型。你可以根據(jù)自己的預(yù)算縮減 GPU 內(nèi)存(1070、1060 等),防止與其它部件爭搶預(yù)算。Hybrid 1080 GPU 也不錯,因為除了大多數(shù) GPU 具有的正常風(fēng)扇冷卻之外,它還預(yù)裝了 aio 水冷系統(tǒng)。1080 Ti 在滿負(fù)載運(yùn)行時會過熱,因此,在訓(xùn)練模型時,良好的冷卻系統(tǒng)對于延長顯卡壽命并保持其性能至關(guān)重要。關(guān)于顯卡選擇的更多細(xì)節(jié),請參見 http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/,該文幫助我真正了解了如何選擇適合深度學(xué)習(xí)環(huán)境的顯卡。
CPU: AMD Threadripper 1900x
雖然你用顯卡訓(xùn)練神經(jīng)網(wǎng)絡(luò),但 CPU 依然很重要,因為你要用它來進(jìn)行數(shù)據(jù)準(zhǔn)備等操作,因此那些多核 CPU 將有助于加快速度。我用的是「線程撕裂者」Treadripper,因為這是市面上非常新的一款多核 CPU(ThreadRipper 2 代有 32 個內(nèi)核!),而且比因特爾價格低得多。1900x 是去年發(fā)布的基礎(chǔ)版 TR,它只有 8 個內(nèi)核,不過我對這臺服務(wù)器的整體目標(biāo)是保持它的可升級性。
需要注意的一點是,在選擇 CPU 時,要確保有 8 或 16 個 pcie 插槽供顯卡使用,這樣才能保證它們在低負(fù)載下發(fā)揮較好的性能,否則就有堵塞系統(tǒng)的風(fēng)險。在高端 CPU 上,如果你的服務(wù)器中有 4 個顯卡,那么你就有足夠的 pcie 插槽。
主板:MSI X399 SLI Plus
選擇這塊主板是因為它是一塊完整的 ATX 板,可容納 4 個 GPU,RAM 最多可達(dá) 128GB。正如我前面所說,這個服務(wù)器的主要目標(biāo)之一是保持它可升級。
內(nèi)存:32GB Corsair Vengeance LPX DDR4 (2 x 16GB)
內(nèi)存越大,處理大型數(shù)據(jù)集就越容易。我的下一個升級計劃是再添加兩個 16GB RAM 內(nèi)存條,這也是我沒有安裝四通道內(nèi)存(4 個 8GB 內(nèi)存條)的原因,盡管它會提高我的服務(wù)器的性能。
存儲:256GB Samsung SSD & 2TB HDD
我把 Ubuntu、我的所有庫、我在 SSD 上正在使用的數(shù)據(jù)集以及手里的其它所有數(shù)據(jù)都存在 2TB 的機(jī)械硬盤上。
冷卻器:Corsair H100i v2 液體冷卻器
「線程撕裂者」沒有備用冷卻器(如果你有 30 美元的余款,至少應(yīng)該買一個便宜的二手冷卻器),所以我想要一個可以全天候使用的、便宜又容易維護(hù)的冷卻器。這款集各種優(yōu)點于一身的冷卻器非常容易安裝,而且非常可靠(在數(shù)十萬臺機(jī)組中,可能只有一兩臺發(fā)生冷卻液泄漏)、安靜。
電源:EVGA SuperNOVA 1000w 80 + Gold Certified
較好有一個功率超過技術(shù)要求的 PSU。PCPartpicker 的功率計算器能夠大致算出你需要多大的功率(我的服務(wù)器是 824w),然而它經(jīng)常在數(shù)量上出錯,因此較好進(jìn)行安全操作,以防你的計算機(jī)無法打開。「Gold Certified」只是指 PSU 的效率(浪費了多少功率作為熱量)。
機(jī)箱:Corsair 760T Full Tower
我選擇這個機(jī)箱是因為它的價格和內(nèi)部空間大小。雖然它并不能提高你的模型訓(xùn)練速度,但是透明的側(cè)面板和紅色的 LED 確實讓你看起來更酷。
這幅圖里的東西花掉了我一年的積蓄和畢業(yè)的錢
把部件整合到一起
你可能不太了解如何組裝一臺電腦,這個過程其實就像組裝一套昂貴的樂高積木一樣。任何人都可以做到,因為它真的很簡單。我將快速介紹如何組裝電腦,并且我強(qiáng)烈建議你在組裝自己的電腦時觀看完整的視頻。這些說明幾乎適用于任何你正在使用的電腦,就像我上面鏈接的視頻指南一樣。
第一步:組裝 CPU
這可能是組裝電腦過程中最可怕的部分,因為你必須遵循特定的步驟,并且可能由于一些小意外而毀掉價值 430 美元的 CPU(如弄斷一個 CPU 的引腳)。不過這一步其實很簡單,你只需確保組裝前看過視頻教程即可。對于 Threadripper 來說,安裝過程略有不同,因為在大多數(shù)主板上,你不需要「鎖緊」處理器,而是使用單個扣架即可。
照片來源:Slav Ivanov
第二步:組裝電源設(shè)備
電源的安裝順序并沒有對錯之分,但我喜歡先把 PSU 放進(jìn)盒子里,因為有些情況下你需要把 PSU 卡進(jìn)一個插槽里,這樣做你才能「穿過主板」。
第三步:組裝其它部件
這是至關(guān)重要的一步,一旦主板安裝好,那其他部分的安裝會變得很容易。我將按照如下順序進(jìn)行安裝:
安裝 RAM。這很簡單,只需把內(nèi)存條向正確的方向移動,并把插槽正確地按進(jìn)主板即可(請參閱安裝手冊,因為插槽要根據(jù)你擁有的內(nèi)存條個數(shù)決定)。
安裝 CPU 冷卻器。的小麻煩是為了與 TR 兼容,我必須更換安裝支架,這需要很大的力氣。安裝散熱器需要 8 個螺栓,我已安裝完畢。
安裝顯卡。只需要把顯卡安裝到主板的特定卡槽中即可(像內(nèi)存條一樣,參照你的手冊,看哪些插槽可以把顯卡放入),再把散熱器固定在你的機(jī)箱上。要確保你的散熱器在 GPU 上方。在上圖中我犯了個小錯誤,所以不得不把它重新掛在機(jī)箱的前板上。
安裝存儲器。為了獲得更好的散熱效果我卸掉了一塊驅(qū)動板,所以我把 SSD 和 HDD 放在右下角的單驅(qū)動器槽里。
第四步:安裝成功?
現(xiàn)在可以打開你的設(shè)備了。開始因為我設(shè)備的電源鍵上正負(fù)線接反了,所以我的設(shè)備并沒有成功打開,但后來還是出現(xiàn)了預(yù)期的白光和紅光。如果一切順利,你可以看到你的電腦屏幕被點亮,然后主板開始搜索引導(dǎo)設(shè)備。
設(shè)置服務(wù)器
安裝操作系統(tǒng)
下一步是安裝操作系統(tǒng)。我使用的是 Linux,因為大多數(shù) DL 框架都是針對該系統(tǒng)設(shè)計的。使用的臺式機(jī)是 Ubuntu 16.04 LTS, 用 USB 就可安裝全部的東西。有很多像 UNetbootin 或 Rufus(僅用于 Windows)的免費工具,可以先下載到 U 盤中備用。這是一個介紹在 Mac 上創(chuàng)建可啟動 USB 的完整過程的教程(https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-macos?_ga=2.169997348.541383618.1529376295-1852780805.1529376295#0),如果你用 Windows,可以打開此鏈接:https://www.howtogeek.com/howto/linux/create-a-bootable-ubuntu-usb-flash-drive-the-easy-way/。
設(shè)置 SSH
第一步:端口映射
你需要對所有的路由器進(jìn)行類似處理,如果是 apple 的路由器可以遵循這個指南:https://portforward.com/apple/,操作如下:1. 為你的服務(wù)器設(shè)置一個靜態(tài) IP,防止它在每次關(guān)閉時更改。2. 用 Apple Airport Utility 登錄你的路由器。3. 為服務(wù)器映射端口,完成這一步需要找到服務(wù)器的 MAC 地址,如何在 Ubuntu 找到地址可以查看此鏈接:http://technologyinfinite.blogspot.com/2016/07/three-simple-ways-to-find-mac-address.html。
第二步:創(chuàng)建一個動態(tài) IP 地址
我之前為服務(wù)器創(chuàng)建過動態(tài) IP 地址,可以允許我在終端遠(yuǎn)程連接它。你可以通過該網(wǎng)站(http://canyouseeme.org/)驗證它的有效性。
鍵入一個如下所示的命令連接到我的服務(wù)器:
ssh [my_username]@[my_ip] -L 8888:[dl-rig_static_ip]:8889
我的服務(wù)器在端口 8888 上運(yùn)行,jupyter notebooks 運(yùn)行在 8889 上(-L 選項將指定的本機(jī)端口重新定向到不同的主機(jī)和端口)。這樣我們就可以在本地運(yùn)行我們的設(shè)備,與服務(wù)器同時測試,以便訓(xùn)練。如果不想這樣,在-L 之前把所有東西輸入進(jìn)去即可。在下一節(jié)我會解釋如何更改運(yùn)行 jupyter notebooks 的端口。
安裝深度學(xué)習(xí)/機(jī)器學(xué)習(xí)庫
現(xiàn)在需要安裝所有的與深度學(xué)習(xí)/機(jī)器學(xué)習(xí)相關(guān)的庫。我會將安裝腳本進(jìn)行分節(jié),這樣你就容易理解這些內(nèi)容。該腳本是基于 Jeremy Howard』s 編寫的 install-gpu.sh(https://github.com/fastai/courses/blob/master/setup/install-gpu.sh),這里邊很多東西不僅僅是因為它們是實用性工具,更是因為這也是我們要在 Fastai 中使用的。
首先,我們需要保證系統(tǒng)是的,并且安裝了所有我們需要的基礎(chǔ)工具包:
sudo apt-get update
sudo apt-get --assume-yes upgrade
sudo apt-get --assume-yes install tmux build-essential gcc g++ make binutils unzip
sudo apt-get --assume-yes install software-properties-common
sudo apt-get --assume-yes install git
下一步是下載和安裝所有 CUDA GPU 的驅(qū)動包:
mkdir ~/downloadscd ~/downloads
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
sudo apt-get --assume-yes upgrade
sudo apt-get --assume-yes autoremove
sudo apt-get install cuda-toolkit-9.0 cuda-command-line-tools-9-0
現(xiàn)在我們開始驗證是否正確安裝了 CUDA:
sudo modprobe nvidia
nvcc --version
nvidia-smi
現(xiàn)在開始,我們將 CUDA(Nvidia Deep Learning api)添加到路徑變量:
cat >> ~/.bashrc << "EOF"
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
EOF
source ~/.bashrc
下一步是安裝 CuDNN 庫(創(chuàng)建神經(jīng)網(wǎng)絡(luò)所需):
wget http://files.fast.ai/files/cudnn-9.1-linux-x64-v7.tgz
tar xf cudnn-9.1-linux-x64-v7.tgz
sudo cp cuda/include/*.* /usr/local/cuda/include/
sudo cp cuda/lib64/*.* /usr/local/cuda/lib64/
現(xiàn)在我們?yōu)楫?dāng)前用戶安裝 Anaconda:
wget "https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh"
bash "Anaconda3-5.0.1-Linux-x86_64.sh" -b
cd ~
echo "export PATH="$HOME/anaconda3/bin:$PATH"" >> ~/.bashrc
export PATH="$HOME/anaconda3/bin:$PATH"
conda install -y bcolz
conda upgrade -y --all
下一步,安裝 Tensorflow 和 Keras:
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.8.0-cp36-cp36m-linux_x86_64.whl
pip install keras
mkdir ~/.keras
echo "{
? ? "image_dim_ordering": "tf",
? ? "epsilon": 1e-07,
? ? "floatx": "float32",
? ? "backend": "tensorflow"
}" > ~/.keras/keras.json
接下來,我們將為 Fastai 安裝 Python 依賴項:
mkdir -p ~/development/_training/ml
cd ~/development/_training/ml
git clone https://github.com/fastai/fastai.git
cd fastai
conda env update
以下幾節(jié)將介紹如何配置 jupyter notebook:
# Leaving the next line uncommented will prompt you to provide a password to
# use with your jupyter notebook.
jupass=`python -c "from notebook.auth import passwd; print(passwd())"`
# To hardcode the password to "jupyter" comment line above and uncomment the line below.
#jupass=sha1:85ff16c0f1a9:c296112bf7b82121f5ec73ef4c1b9305b9e538af
# create ssl cert for jupyter notebook
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout $HOME/mykey.key -out $HOME/mycert.pem -subj "/C=IE"
# configure notebook
echo "c.NotebookApp.certfile = u"/home/{user}/mycert.pem"" >> $HOME/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.keyfile = u"/home/{user}/mykey.key"" >> $HOME/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.password = u""$jupass""" >> $HOME/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.ip = "*"" >> $HOME/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.open_browser = False" >> $HOME/.jupyter/jupyter_notebook_config.py
要更改默認(rèn)端口以在(端口 8888)上運(yùn)行 Jupyter notebook,請取消注釋,并輸入所需端口。這樣就可以在服務(wù)器和本地同時運(yùn)行你的筆記本,也可以在你使用筆記本時讓多個用戶使用他們自己的筆記本。
#echo "c.NotebookApp.port = 9999" >> $HOME/.jupyter/jupyter_notebook_config.py
現(xiàn)在我們開始配置 tmux,這個工具可以使我們在終端窗口創(chuàng)建多個「窗口」,同時在斷開連接后仍能保持程序的運(yùn)行。因為這個文件能夠幫助我們理解 tmux 的所有功能,所以需要檢查此文件。它非常的有用,因為你可以在一個窗口中運(yùn)行你的筆記本,在另一個窗口中監(jiān)視 GPU 使用,并在第三個窗口中打開一個 linux 終端:
pip install tmuxp
mkdir ~/.tmuxp
接下來,我們將創(chuàng)建 tmuxp 的配置文件,該文件將在一個命令中對開發(fā)環(huán)境進(jìn)行設(shè)置,這樣我們每次想處理事務(wù)的時候就無需配置窗口、啟用 jupyter notebook 了。對于 fastai 環(huán)境,我們將從 tmuxp 加載 fastai 開始。請參見使用 tmuxp 的鏈接,此處是 bash 腳本中的文檔,此鏈接用于在服務(wù)器重啟時保存 tmux 會話。現(xiàn)在讓我們配置運(yùn)行環(huán)境。
cat > $HOME/.tmuxp/fastai.yml < session_name: fastai windows: - window_name: dev window ? layout: main-vertical ? options: ? ? main-pane-width: 140 ? shell_command_before: ? ? # run as a first command in all panes ? ? - cd ~/development/_training/ml/fastai ? ? - source activate fastai ? panes: ? ? - shell_command: ? ? ? - clear ? ? - shell_command: ? ? ? - clear ? ? ? - jupyter notebook ? ? - shell_command: ? ? ? - watch -n 0.5 nvidia-smi Tmuxp-config 因為我們不再需要這些,所以可以刪除安裝文件: cd ~/downloads rm -rf cuda-repo-ubuntu1604_9.0.176-1_amd64.deb xf cudnn-9.1-linux-x64-v7.tgz Anaconda3-5.0.1-Linux-x86_64.sh ? ? ? ? cd ~ 就是這樣。在我寫這篇文章的時候,服務(wù)器一直在全天候運(yùn)行,無問題、無噪聲、非常輕松地通過了訓(xùn)練。 其他參考資料來源: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 https://towardsdatascience.com/building-your-own-deep-learning-box-47b918aea1eb https://medium.com/impactai/setting-up-a-deep-learning-machine-in-a-lazy-yet-quick-way-be2642318850? 原文鏈接:https://waydegg.github.io/making-a-dl-server.html#making-a-dl-server ? ? 商業(yè)智能與數(shù)據(jù)分析群 興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價值的辦法,實際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報表系統(tǒng)等全方位知識 QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/4813.html
摘要:受到其他同行在上討論更好經(jīng)驗的激勵,我決定買一個專用的深度學(xué)習(xí)盒子放在家里。下面是我的選擇從選擇配件到基準(zhǔn)測試。即便是深度學(xué)習(xí)的較佳選擇,同樣也很重要。安裝大多數(shù)深度學(xué)習(xí)框架是首先基于系統(tǒng)開發(fā),然后逐漸擴(kuò)展到支持其他操作系統(tǒng)。 在用了十年的 MacBook Airs 和云服務(wù)以后,我現(xiàn)在要搭建一個(筆記本)桌面了幾年時間里我都在用越來越薄的 MacBooks 來搭載一個瘦客戶端(thin c...
摘要:很明顯這臺機(jī)器受到了英偉達(dá)的部分啟發(fā)至少機(jī)箱是這樣,但價格差不多只有的一半。這篇個文章將幫助你安裝英偉達(dá)驅(qū)動,以及我青睞的一些深度學(xué)習(xí)工具與庫。 本文作者 Roelof Pieters 是瑞典皇家理工學(xué)院 Institute of Technology & Consultant for Graph-Technologies 研究深度學(xué)習(xí)的一位在讀博士,他同時也運(yùn)營著自己的面向客戶的深度學(xué)習(xí)產(chǎn)...
摘要:文章翻譯自深度學(xué)習(xí)是一個計算需求強(qiáng)烈的領(lǐng)域,的選擇將從根本上決定你的深度學(xué)習(xí)研究過程體驗。因此,今天就談?wù)勅绾芜x擇一款合適的來進(jìn)行深度學(xué)習(xí)的研究。此外,即使深度學(xué)習(xí)剛剛起步,仍然在持續(xù)深入的發(fā)展。例如,一個普通的在上的售價約為美元。 文章翻譯自:Which GPU(s) to Get for Deep Learning(http://t.cn/R6sZh27)深度學(xué)習(xí)是一個計算需求強(qiáng)烈的領(lǐng)域...
摘要:幸運(yùn)的是,這些正是深度學(xué)習(xí)所需的計算類型。幾乎可以肯定,英偉達(dá)是目前執(zhí)行深度學(xué)習(xí)任務(wù)較好的選擇。今年夏天,發(fā)布了平臺提供深度學(xué)習(xí)支持。該工具適用于主流深度學(xué)習(xí)庫如和。因為的簡潔和強(qiáng)大的軟件包擴(kuò)展體系,它目前是深度學(xué)習(xí)中最常見的語言。 深度學(xué)習(xí)初學(xué)者經(jīng)常會問到這些問題:開發(fā)深度學(xué)習(xí)系統(tǒng),我們需要什么樣的計算機(jī)?為什么絕大多數(shù)人會推薦英偉達(dá) GPU?對于初學(xué)者而言哪種深度學(xué)習(xí)框架是較好的?如何將...
摘要:旗下產(chǎn)品有藍(lán)威仿真云計算平臺藍(lán)威風(fēng)場規(guī)劃智能決策平臺電子可靠性分析云平臺。而快杰云主機(jī)采用了第二代處理器,主頻高達(dá)另外,云主機(jī)采用的網(wǎng)絡(luò)增強(qiáng)技術(shù)使得內(nèi)網(wǎng)的最大包量可達(dá)萬,同步配置的云盤帶來的存儲性能高達(dá)萬。過去,高性能計算(HPC)因其高昂的成本和復(fù)雜的編程,長期只能被應(yīng)用于軍事、科研等高精尖領(lǐng)域。隨著工業(yè)制造、生物醫(yī)藥、基因檢測、影視渲染等行業(yè)的數(shù)字化轉(zhuǎn)型,各領(lǐng)域?qū)τ诟咝阅苄酒⒋鎯蛢?nèi)網(wǎng)...
閱讀 2229·2023-04-26 01:57
閱讀 3258·2023-04-25 16:30
閱讀 2333·2021-11-17 09:38
閱讀 1082·2021-10-08 10:14
閱讀 1392·2021-09-23 11:21
閱讀 3688·2019-08-29 17:28
閱讀 3458·2019-08-29 15:27
閱讀 951·2019-08-29 13:04