操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    讀:Python本身的數據分析功能并不強,需要安裝一些第三方擴展庫來增強其相應的功能。本文將對NumPy、SciPy、Matplotlib、pandas、StatsModels、scikit-learn、Keras、Gensim等庫的安裝和使用進行簡單的介紹。

    作者:張良均 譚立云 劉名軍 江建明

    來源:華章科技

    如果讀者安裝的是Anaconda發行版,那么它已經自帶了以下庫:NumPy、SciPy、Matplotlib、pandas、scikit-learn。

    本文主要是對這些庫進行簡單的介紹,讀者也可以到官網閱讀更加詳細的使用教程。

    • NumPy:提供數組支持以及相應的高效的處理函數
    • SciPy:提供矩陣支持以及矩陣相關的數值計算模塊
    • Matplotlib:強大的數據可視化工具、作圖庫
    • pandas:強大、靈活的數據分析和探索工具
    • StatsModels:統計建模和計量經濟學,包括描述統計、統計模型估計和推斷
    • scikit-learn:支持回歸、分類、聚類等強大的機器學習庫
    • Keras:深度學習庫,用于建立神經網絡以及深度學習模型
    • Gensim:用來做文本主題模型的庫,文本挖掘可能會用到

    01 NumPy

    Python并沒有提供數組功能。雖然列表可以完成基本的數組功能,但它不是真正的數組,而且在數據量較大時,使用列表的速度就會很慢。為此,NumPy提供了真正的數組功能以及對數據進行快速處理的函數。

    NumPy還是很多更高級的擴展庫的依賴庫,我們后面介紹的SciPy、Matplotlib、pandas等庫都依賴于它。值得強調的是,NumPy內置函數處理數據的速度是C語言級別的,因此在編寫程序的時候,應當盡量使用其內置函數,避免效率瓶頸的(尤其是涉及循環的問題)出現。

    在Windows操作系統中,NumPy的安裝跟普通第三方庫的安裝一樣,可以通過pip命令進行,命令如下:

    pip install numpy

    也可以自行下載源代碼,然后使用如下命令安裝:

    python setup.py install

    在Linux操作系統下,上述方法也是可行的。此外,很多Linux發行版的軟件源中都有Python常見的庫,因此還可以通過Linux系統自帶的軟件管理器安裝,如在Ubuntu下可以用如下命令安裝:

    sudo apt-get install python-numpy

    安裝完成后,可以使用NumPy對數據進行操作,如代碼清單2-27所示。

    • 代碼清單2-27 使用NumPy操作數組
    # -*- coding: utf-8 -*
    import numpy as np                     # 一般以np作為NumPy庫的別名
    a = np.array([2, 0, 1, 5])             # 創建數組
    print(a)                               # 輸出數組
    print(a[:3])                           # 引用前三個數字(切片)
    print(a.min())                         # 輸出a的最小值
    a.sort()                               # 將a的元素從小到大排序,此操作直接修改a,因此這時候a為[0, 1, 2, 5]
    b= np.array([[1, 2, 3], [4, 5, 6]])    # 創建二維數組
    print(b*b)                             # 輸出數組的平方陣,即[[1, 4, 9], [16, 25, 36]]

    NumPy是Python中相當成熟和常用的庫,因此關于它的教程有很多,最值得一看的是其官網的幫助文檔,其次還有很多中英文教程,讀者遇到相應的問題時,可以查閱相關資料。

    參考鏈接:

    http://www.numpy.org

    http://reverland.org/python/2012/08/22/numpy

    02 SciPy

    如果說NumPy讓Python有了MATLAB的味道,那么SciPy就讓Python真正成為半個MATLAB了。NumPy提供了多維數組功能,但它只是一般的數組,并不是矩陣,比如當兩個數組相乘時,只是對應元素相乘,而不是矩陣乘法。SciPy提供了真正的矩陣以及大量基于矩陣運算的對象與函數。

    SciPy包含的功能有最優化、線性代數、積分、插值、擬合、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算,顯然,這些功能都是挖掘與建模必需的。

    SciPy依賴于NumPy,因此安裝之前得先安裝好NumPy。安裝SciPy的方式與安裝NumPy的方法大同小異,需要提及的是,在Ubuntu下也可以用類似的命令安裝SciPy,安裝命令如下:

    sudo apt-get install python-scipy

    安裝好SciPy后,使用SciPy求解非線性方程組和數值積分,如代碼清單2-28所示。

    • 代碼清單2-28 使用SciPy求解非線性方程組和數值積分
    # -*- coding: utf-8 -*
    # 求解非線性方程組2x1-x2^2=1,x1^2-x2=2
    from scipy.optimize import fsolve       # 導入求解方程組的函數
    def f(x):                               # 定義要求解的方程組
        x1 = x[0]
        x2 = x[1]
        return [2*x1 - x2**2 - 1, x1**2 - x2 -2]
    
    result = fsolve(f, [1,1])               # 輸入初值[1, 1]并求解
    print(result)                           # 輸出結果,為array([ 1.91963957,  1.68501606])
    
    # 數值積分
    from scipy import integrate             # 導入積分函數
    def g(x):                               # 定義被積函數
        return (1-x**2)**0.5
    
    pi_2, err = integrate.quad(g, -1, 1)    # 積分結果和誤差
    print(pi_2 * 2)                         # 由微積分知識知道積分結果為圓周率pi的一半

    參考鏈接:

    http://www.scipy.org

    http://reverland.org/python/2012/08/24/scipy

    03 Matplotlib

    不論是數據挖掘還是數學建模,都要面對數據可視化的問題。對于Python來說,Matplotlib是最著名的繪圖庫,主要用于二維繪圖,當然也可以進行簡單的三維繪圖。它不僅提供了一整套和MATLAB相似但更為豐富的命令,讓我們可以非常快捷地用Python可視化數據,而且允許輸出達到出版質量的多種圖像格式。

    Matplotlib的安裝并沒有什么特別之處,可以通過“pip install matplotlib”命令安裝或者自行下載源代碼安裝,在Ubuntu下也可以用類似的命令安裝,命令如下:

    sudo apt-get install python-matplotlib

    需要注意的是,Matplotlib的上級依賴庫相對較多,手動安裝的時候,需要逐一把這些依賴庫都安裝好。安裝完成后就可以牛刀小試了。下面是一個簡單的作圖例子,如代碼清單2-29所示,它基本包含了Matplotlib作圖的關鍵要素,作圖效果如圖2-5所示。

    • 代碼清單2-29 Matplotlib作圖示例
    # -*- coding: utf-8 -*-
    import numpy as np
    import matplotlib.pyplot as plt                    # 導入Matplotlib
    
    x = np.linspace(0, 10, 1000)                       # 作圖的變量自變量
    y = np.sin(x) + 1                                  # 因變量y
    z = np.cos(x**2) + 1                               # 因變量z
    
    plt.figure(figsize = (8, 4))                       # 設置圖像大小
    plt.plot(x,y,label = '$\sin x+1$', color = 'red', linewidth = 2)
                                                       # 作圖,設置標簽、線條顏色、線條大小
    plt.plot(x, z, 'b--', label = '$\cos x^2+1$')      # 作圖,設置標簽、線條類型
    plt.xlabel('Time(s) ')                             # x軸名稱
    plt.ylabel('Volt')                                 # y軸名稱
    plt.title('A Simple Example')                      # 標題
    plt.ylim(0, 2.2)                                   # 顯示的y軸范圍
    plt.legend()                                       # 顯示圖例
    plt.show()                                         # 顯示作圖結果

    ▲圖2-5 Matplotlib的作圖效果展示

    如果讀者使用的是中文標簽,就會發現中文標簽無法正常顯示,這是因為Matplotlib的默認字體是英文字體,解決方法是在作圖之前手動指定默認字體為中文字體,如黑體(Sim-Hei),命令如下:

    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽

    其次,保存作圖圖像時,負號有可能不能顯示,對此可以通過以下代碼解決:

    plt.rcParams['axes.unicode_minus'] = False    # 解決保存圖像是負號'-'顯示為方塊的問題

    這里有一個小建議:有時間多去Matplotlib提供的“畫廊”欣賞用它做出的漂亮圖片,也許你就會慢慢愛上Matplotlib作圖了。

    畫廊網址:

    http://matplotlib.org/gallery.html

    參考鏈接:

    http://matplotlib.org

    http://reverland.org/python/2012/09/07/matplotlib-tutorial

    04 pandas

    pandas是Python下最強大的數據分析和探索工具。它包含高級的數據結構和精巧的工具,使得用戶在Python中處理數據非常快速和簡單。

    pandas建造在NumPy之上,它使得以NumPy為中心的應用使用起來更容易。pandas的名稱來自于面板數據(Panel Data)和Python數據分析(Data Analysis),它最初作為金融數據分析工具被開發,由AQR Capital Management于2008年4月開發問世,并于2009年底開源出來。

    pandas的功能非常強大,支持類似SQL的數據增、刪、查、改,并且帶有豐富的數據處理函數;支持時間序列分析功能;支持靈活處理缺失數據;等等。事實上,單純地用pandas這個工具就足以寫一本書,讀者可以閱讀pandas的主要作者之一Wes Mc-Kinney寫的《利用Python進行數據分析》來學習更詳細的內容。

    1. 安裝

    pandas的安裝相對來說比較容易一些,只要安裝好NumPy之后,就可以直接安裝了,通過pip install pandas命令或下載源碼后通過python setup.py install命令安裝均可。

    由于我們頻繁用到讀取和寫入Excel,但默認的pandas還不能讀寫Excel文件,需要安裝xlrd(讀)度和xlwt(寫)庫才能支持Excel的讀寫。為Python添加讀取/寫入Excel功能的命令如下:

    pip install xlrd          # 為Python添加讀取Excel的功能
    pip install xlwt          # 為Python添加寫入Excel的功能

    2. 使用

    在后面的章節中,我們會逐步展示pandas的強大功能,而在本節,我們先以簡單的例子一睹為快。

    首先,pandas基本的數據結構是Series和DataFrame。Series顧名思義就是序列,類似一維數組;DataFrame則相當于一張二維的表格,類似二維數組,它的每一列都是一個Series。

    為了定位Series中的元素,pandas提供了Index這一對象,每個Series都會帶有一個對應的Index,用來標記不同的元素,Index的內容不一定是數字,也可以是字母、中文等,它類似于SQL中的主鍵。

    類似的,DataFrame相當于多個帶有同樣Index的Series的組合(本質是Series的容器),每個Series都帶有一個唯一的表頭,用來標識不同的Series。pandas中常用操作的示例如代碼清單2-30所示。

    • 代碼清單2-30 pandas中的常用操作
    # -*- coding: utf-8 -*-
    import numpy as np
    import pandas as pd                              # 通常用pd作為pandas的別名。
    
    s = pd.Series([1,2,3], index=['a', 'b', 'c'])    # 創建一個序列s
                                                     # 創建一個表
    d = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c'])
    d2 = pd.DataFrame(s)                             # 也可以用已有的序列來創建數據框
    
    d.head()                                         # 預覽前5行數據
    d.describe()                                     # 數據基本統計量
    
    # 讀取文件,注意文件的存儲路徑不能帶有中文,否則讀取可能出錯。
    pd.read_excel('data.xls')                    # 讀取Excel文件,創建DataFrame。
    pd.read_csv('data.csv', encoding='utf-8')    # 讀取文本格式的數據,一般用encoding指定編碼。

    由于pandas是本書的主力工具,在后面將會頻繁使用它,因此這里不再詳細介紹,后文會更加詳盡地講解pandas的使用方法。

    參考鏈接:

    http://pandas.pydata.org/pandas-docs/stable/

    05 StatsModels

    pandas著重于數據的讀取、處理和探索,而StatsModels則更加注重數據的統計建模分析,它使得Python有了R語言的味道。StatsModels支持與pandas進行數據交互,因此,它與pandas結合成為Python下強大的數據挖掘組合。

    安裝StatsModels相當簡單,既可以通過pip命令安裝,又可以通過源碼安裝。對于Windows用戶來說,官網上甚至已經有編譯好的exe文件可供下載。如果手動安裝的話,需要自行解決好依賴問題,StatsModels依賴于pandas(當然也依賴于pandas所依賴的庫),同時還依賴于Pasty(一個描述統計的庫)。

    使用StatsModels進行ADF平穩性檢驗,如代碼清單2-31所示。

    • 代碼清單2-31 使用StatsModels進行ADF平穩性檢驗
    # -*- coding: utf-8 -*-
    from statsmodels.tsa.stattools import adfuller as ADF    # 導入ADF檢驗
    import numpy as np
    
    ADF(np.random.rand(100))                                 # 返回的結果有ADF值、p值等

    參考鏈接:

    http://statsmodels.sourceforge.net/stable/index.html

    06 scikit-learn

    從該庫的名字可以看出,這是一個與機器學習相關的庫。不錯,scikit-learn是Python下強大的機器學習工具包,它提供了完善的機器學習工具箱,包括數據預處理、分類、回歸、聚類、預測、模型分析等。

    scikit-learn依賴于NumPy、SciPy和Matplotlib,因此,只需要提前安裝好這幾個庫,然后安裝scikit-learn基本上就沒有什么問題了,安裝方法跟前幾個庫的安裝一樣,可以通過pip install scikit-learn命令安裝,也可以下載源碼自行安裝。

    使用scikit-learn創建機器學習的模型很簡單,示例如代碼清單2-32所示。

    • 代碼清單2-32 使用scikit-learn創建機器學習模型
    # -*- coding: utf-8 -*-
    from sklearn.linear_model import LinearRegression     # 導入線性回歸模型
    model = LinearRegression()                            # 建立線性回歸模型
    print(model)

    1. 所有模型提供的接口有

    對于訓練模型來說是model.fit(),對于監督模型來說是fit(X, y),對于非監督模型是fit(X)。

    2. 監督模型提供如下接口

    • model.predict(X_new):預測新樣本。
    • model.predict_proba(X_new):預測概率,僅對某些模型有用(比如LR)。
    • model.score():得分越高,fit越好。

    3. 非監督模型提供如下接口

    • model.transform():從數據中學到新的“基空間”。
    • model.fit_transform():從數據中學到新的基并將這個數據按照這組“基”進行轉換。

    Scikit-learn本身提供了一些實例數據供我們上手學習,比較常見的有安德森鳶尾花卉數據集、手寫圖像數據集等。

    安德森鳶尾花卉數據集有150個鳶尾花的尺寸觀測值,如萼片長度和寬度,花瓣長度和寬度;還有它們的亞屬:山鳶尾(iris setosa)、變色鳶尾(iris versicolor)和維吉尼亞鳶尾(iris virginica)。導入iris數據集并使用該數據訓練SVM模型,如代碼清單2-33所示。

    • 代碼清單2-33 導入iris數據集并訓練SVM模型
    # -*- coding: utf-8 -*-
    from sklearn import datasets                # 導入數據集
    
    iris = datasets.load_iris()                 # 加載數據集
    print(iris.data.shape)                      # 查看數據集大小
    
    from sklearn import svm                     # 導入SVM模型
    
    clf = svm.LinearSVC()                       # 建立線性SVM分類器
    clf.fit(iris.data, iris.target)             # 用數據訓練模型
    clf.predict([[ 5.0,  3.6,  1.3,  0.25]])    # 訓練好模型之后,輸入新的數據進行預測
    clf.coef_                                   # 查看訓練好模型的參數

    參考鏈接:

    http://scikit-learn.org/stable/

    07 Keras

    scikit-learn已經足夠強大了,然而它并沒有包含這一強大的模型—人工神經網絡。人工神經網絡是功能相當強大但是原理又相當簡單的模型,在語言處理、圖像識別等領域都有重要的作用。近年來逐漸流行的“深度學習”算法,實質上也是一種神經網絡,可見在Python中實現神經網絡是非常必要的。

    本書用Keras庫來搭建神經網絡。事實上,Keras并非簡單的神經網絡庫,而是一個基于Theano的強大的深度學習庫,利用它不僅可以搭建普通的神經網絡,還可以搭建各種深度學習模型,如自編碼器、循環神經網絡、遞歸神經網絡、卷積神經網絡等。由于它是基于Theano的,因此速度也相當快。

    Theano也是Python的一個庫,它是由深度學習專家Yoshua Bengio帶領的實驗室開發出來的,用來定義、優化和高效地解決多維數組數據對應數學表達式的模擬估計問題。它具有高效實現符號分解、高度優化的速度和穩定性等特點,最重要的是它還實現了GPU加速,使得密集型數據的處理速度是CPU的數十倍。

    用Theano就可以搭建起高效的神經網絡模型,然而對于普通讀者來說門檻還是相當高的。Keras正是為此而生,它大大簡化了搭建各種神經網絡模型的步驟,允許普通用戶輕松地搭建并求解具有幾百個輸入節點的深層神經網絡,而且定制的自由度非常大,讀者甚至因此驚呼:搭建神經網絡可以如此簡單!

    1. 安裝

    安裝Keras之前首先需要安裝NumPy、SciPy和Theano。安裝Theano之前首先需要準備一個C++編譯器,這在Linux系統下是自帶的。因此,在Linux系統下安裝Theano和Keras都非常簡單,只需要下載源代碼,然后用python setup.py install安裝就行了,具體可以參考官方文檔。

    可是在Windows系統下就沒有那么簡單了,因為它沒有現成的編譯環境,一般而言是先安裝MinGW(Windows系統下的GCC和G++),然后再安裝Theano(提前裝好NumPy等依賴庫),最后安裝Keras,如果要實現GPU加速,還需要安裝和配置CUDA。

    值得一提的是,在Windows系統下的Keras速度會大打折扣,因此,想要在神經網絡、深度學習做深入研究的讀者,請在Linux系統下搭建相應的環境。

    參考鏈接:

    http://deeplearning.net/software/theano/install.html#install

    2. 使用

    用Keras搭建神經網絡模型的過程相當簡單,也相當直觀,就像搭積木一般,通過短短幾十行代碼,就可以搭建起一個非常強大的神經網絡模型,甚至是深度學習模型。簡單搭建一個MLP(多層感知器),如代碼清單2-34所示。

    • 代碼清單2-34 搭建一個MLP(多層感知器)
    # -*- coding: utf-8 -*-
    from keras.models import Sequential
    from keras.layers.core import Dense, Dropout, Activation
    from keras.optimizers import SGD
    
    model = Sequential()                # 模型初始化
    model.add(Dense(20, 64))            # 添加輸入層(20節點)、第一隱藏層(64節點)的連接
    model.add(Activation('tanh'))       # 第一隱藏層用tanh作為激活函數
    model.add(Dropout(0.5))             # 使用Dropout防止過擬合
    model.add(Dense(64, 64))            # 添加第一隱藏層(64節點)、第二隱藏層(64節點)的連接
    model.add(Activation('tanh'))       # 第二隱藏層用tanh作為激活函數
    model.add(Dropout(0.5))             # 使用Dropout防止過擬合
    model.add(Dense(64, 1))             # 添加第二隱藏層(64節點)、輸出層(1節點)的連接
    model.add(Activation('sigmoid'))    # 輸出層用sigmoid作為激活函數
    
    sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)    # 定義求解算法
    model.compile(loss='mean_squared_error', optimizer=sgd)       # 編譯生成模型,損失函數為平均誤差平方和
    
    model.fit(X_train, y_train, nb_epoch=20, batch_size=16)       # 訓練模型
    score = model.evaluate(X_test, y_test, batch_size=16)         # 測試模型

    要注意的是,Keras的預測函數跟scikit-learn有所差別,Keras用model.predict()方法給出概率,用model.predict_classes()給出分類結果。

    參考鏈接:

    https://keras.io/

    08 Gensim

    在Gensim官網中,它對自己的簡介只有一句話:topic modelling for humans!

    Gensim用來處理語言方面的任務,如文本相似度計算、LDA、Word2Vec等,這些領域的任務往往需要比較多的背景知識。

    在這一節中,我們只是提醒讀者有這么一個庫的存在,而且這個庫很強大,如果讀者想深入了解這個庫,可以去閱讀官方幫助文檔或參考鏈接。

    值得一提的是,Gensim把Google在2013年開源的著名的詞向量構造工具Word2Vec編譯好了,作為它的子庫,因此需要用到Word2Vec的讀者也可以直接使用Gensim,而無須自行編譯了。

    Gensim的作者對Word2Vec的代碼進行了優化,所以它在Gensim下的表現比原生的Word2Vec還要快。(為了實現加速,需要準備C++編譯器環境,因此,建議使用Gensim的Word2Vec的讀者在Linux系統環境下運行。)

    下面是一個Gensim使用Word2Vec的簡單例子,如代碼清單2-35所示。

    • 代碼清單2-35 Gensim使用Word2Vec的簡單示例
    # -*- coding: utf-8 -*-
    import gensim, logging
    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level= logging.INFO)
    # logging是用來輸出訓練日志
    
    # 分好詞的句子,每個句子以詞列表的形式輸入
    sentences = [['first', 'sentence'], ['second', 'sentence']]
    
    # 用以上句子訓練詞向量模型
    model = gensim.models.Word2Vec(sentences, min_count=1)
    
    print(model['sentence'])    # 輸出單詞sentence的詞向量。

    參考鏈接:

    http://radimrehurek.com/gensim/

    關于作者:張良均,資深大數據挖掘與分析專家、模式識別專家、AI技術專家。有10余年大數據挖掘與分析經驗,擅長Python、R、Hadoop、Matlab等技術實現的數據挖掘與分析,對機器學習等AI技術驅動的數據分析也有深入研究。

    本文摘編自《Python數據分析與挖掘實戰》(第2版),經出版方授權發布。

    延伸閱讀《Python數據分析與挖掘實戰》

    推薦語:暢銷書全新升級,第1版銷售超過10萬冊,被國內100余所高等院校采用為教材,同時被廣大數據科學工作者奉為經典,是該領域公認的事實標準。作者在大數據挖掘與分析等領域有10余年的工程實踐、教學和創辦企業的經驗,不僅掌握行業的最新技術和實踐方法,而且洞悉學生和老師的需求與痛點。

    AMD X570主板不僅為第三代銳龍提供了PCIE 4.0支持,還帶來豐富的固態硬盤可玩性。本文以技嘉X570 AORUS PRO WIFI主板和AMD Ryzen 7 3800X處理器為例,介紹一些可供大家借鑒的中高階SSD玩法。

    虛擬機NVMe SSD硬件直通:

    NVMe固態硬盤能夠提升虛擬機運行性能,但經過軟件虛擬化轉換之后硬盤性能的損失也會比較大。一些對磁盤性能有特殊需求,并且希望某個虛擬機獨占一顆固態硬盤的情況,可以使用NVMe SSD硬件直通。

    NVMe SSD硬件直通的原理和顯卡直通類似,需要打開主板設置中AMD SVM以及IOMMU選項。以下選擇HyperV的DDA硬件直通為例,需要安裝Windows Server操作系統。

    首先通過HWiNFO64查找浦科特M9P Plus在測試機中的PCI Address,本例中是10:0:0

    打開設備管理器,找到位置PCI總線10、設備0、功能0對應的“標準NVM Express控制器”:

    切換至“詳細信息”選項卡,并從屬性列表中找到“位置路徑”,記錄下方顯示的PCIROOT(0)#(0301)#PCI(0000)。

    在設備管理器中禁用該NVM Express控制器。

    以管理員身份運行Windows PowerShell,依次執行以下命令,將其從宿主機中移除,并綁定給指定的虛擬機。其中locationpath參數使用我們之前記錄的“位置路徑”。

    此時虛擬機操作系統的設備管理器中出現標準NVM Express控制器,代表硬件直通成功。

    虛擬機中CrystalDiskInfo軟件能夠直接識別到浦科特M9P Plus:

    再次執行CrystalDiskMark測速可以看到,直通后的硬盤性能,尤其是隨機讀寫效能顯著上升。

    如果需要解除硬件直通,需要關閉虛擬機并以管理員身份打開Windows PowerShell,依次執行下圖中的命令。其中locationpath參數后跟之前我們記錄下的位置路徑。

    執行以上命令之后,浦科特M9P Plus對應的標準NVM Express控制器重新出現在宿主機設備管理器中,啟用硬件設備即可正常使用。

    NVMe SSD RAID0:

    由CPU而非芯片組控制的NVMe SSD RAID 0原本被英特爾當成高端桌面發燒平臺專用功能,AMD則非常大方地為X570提供了NVMe RAID0功能,它允許跨越CPU或芯片組PCIE通道,利用多個NVMe SSD組建RAID0/1/10陣列。其中最有趣的當然是能夠令讀寫帶寬倍增的RAID0形式。

    本次測試平臺使用的技嘉X570 AORUS PRO WIFI主板還在BIOS中提供了PCIE X16 Bifurcation信道拆分選項,它允許將全長PCIE X16插槽拆分給四個PCIE X4設備同時使用。

    這樣我們就無需使用帶有昂貴的NVMe SSD RAID陣列卡,只要有一塊百元出頭的普通X16轉4x M.2轉接卡即可實現NVMe四盤RAID0陣列。下圖中的轉接卡只用到一顆百利通的差分時鐘緩沖器,成本較低。

    在BIOS設置中打開NVMe RAID支持、關閉CSM選項,保存后重新進入,找到RAIDXpert2Configuration Utility,為連接在PCIE X16插槽上的四顆NVMe SSD組建RAID0陣列。

    在Windows 10安裝過程中,四顆NVMe SSD依然被識別為獨立的個體,需要手動加載提前從AMD官網下載的NVMe RAID驅動程序才能將其變為一個整體來使用。

    三個驅動文件夾的加載順序是先rcbottom,然后rcraid,最后rccfg:

    由于測試條件有限,我們這次只湊到四顆容量不等的PCIE 3.0固態硬盤,使得最終的效果不是非常的理想。未來隨著第二代PCIE 4.0固態硬盤主控方案的成熟,我們也許無需再借助RAID0陣列就能實現更高速的讀寫效能。

    StoreMI:

    AMD從400系列主板開始推出的StoreMI為大家帶來了免費的硬盤性能倍增利器。除了能利用加速機械硬盤之外,StoreMI同樣可以將高速NVMe固態硬盤與大容量SATA固態硬盤捆綁結合,在銳龍平臺下實現經濟、高效的現代存儲體系。

    這次用作快速存儲層的是浦科特M9P Plus 512GB(PCIE版),被加速的慢速層是一塊960GB容量的SATA固態硬盤(DRAMLess無緩存類型)。

    兩顆固態硬盤的理論性能測試如下:


    CrystalDiskMark測試成績只說明了固態硬盤的能力如何,實際對使用影響的驗證則通過FINAL FANTASY XIV: Shadowbringers(以下簡稱FFXIV)測試工具來進行。操作系統和測試工具被安裝在SATA固態硬盤上,FFXIV的游戲場景加載成績為17.137秒:

    接下來安裝并開啟StoreMI進行數據分層、利用浦科特M9P Plus加速常用數據。由于加速盤(浦科特M9P Plus)和被加速盤同為SSD類型,需要手動勾選M9P Plus為Fast快速層,SATA SSD為Slow慢速層。受軟件授權的限制,StoreMI將把浦科特M9P Plus 512GB分為兩部分,除256GB用于加速之外,剩余部分可單獨分區作為數據盤使用。

    StoreMI默認的分層速率設定為最高的Aggressive級,這允許StoreMI盡可能積極地調整Fast快速層的加速數據內容。對于浦科特M9P Plus而言我們無需擔心它的寫入壽命,而使用耐久度不佳的固態硬盤作為Fast快速層時,用戶可以考慮選擇Normal或更低的Slow設定,減緩分層調整的速率。

    除了Tiering Rate之外,StoreMI還可以設定分層數據移動的優先級。Tiering Priority設定影響數據在Slow慢速和Fast快速層之間移動任務的優先級,較高的優先級意味著分層得以較快完成,較慢的優先級意味著較少會影響到當前正在發生的數據讀寫。StoreMI的默認設定是Medium中等。

    StoreMI并非實時緩存,而是分析數據熱度來決定其存儲位置。所以在安裝啟用StoreMI后首次運行FFXIV測試時,成績不會立刻發生變化(StoreMI尚在學習哪些數據屬于常用):

    而第二次FFXIV測試的結果,游戲場景加載時間已經降至11.342秒:說明游戲文件已經進入到讀取速度更快的浦科特M9P Plus固態硬盤當中。

    第三次FFXIV測試的成績進一次提升,游戲場景加載時間11.101秒,與直接在浦科特M9P Plus上運行完全一致。

    同英特爾傲騰加速相比,StoreMI不會受限于16GB或32GB的小容量緩存空間而影響加速效果,也不必單獨購買和配置單獨的NVMe固態硬盤,并且對400系列以及X570主板用戶完全免費。目前NVMe固態硬盤正在加速普及,而QLC閃存的發展也將促使大容量廉價固態硬盤的出現。StoreMI有能力應對這一發展趨勢,提供1+1>2的高性價比體驗。

    M.2插槽的選擇:

    除了A320之外,當代銳龍平臺的主板都會提供不少于2個M.2插槽。這些插槽在外觀上看似一樣,但實際卻使用會有細微的差異。

    在AMD第三代銳龍處理器內有專門預留的PCIE 4.0 x4通道,直連到靠近處理器的M.2插槽;通過芯片組還能引出更多M.2插槽,這些插槽的PCIE信道經過了芯片組轉接后連接到CPU。

    通過主板說明書可以分辨M.2插槽所連接的PCIE信道來源,在只有一塊NVMe固態硬盤的情況下,應優先選擇“基于CPU”的M.2插槽:

    以海盜船MP600 1TB(PCIE 4.0)固態硬盤作為從盤測試,CPU直連的M.2插槽在延遲上具備一定優勢。以下對比圖左側為直連,右側為芯片組轉接。


    PCMark 8存儲測試:NVMe固態硬盤安裝在CPU直連插槽時性能更佳,總成績提升3分,存儲帶寬提高12.08MB/s,部分單項任務完成時間縮短0.2到0.3秒。


    PCMark 10完整系統盤基準測試對比:NVMe固態硬盤安裝在CPU直連插槽時性能更佳,存儲帶寬提升13.88MB/s,平均存取時間明顯縮短。

    作為對比,英特爾平臺主板的M.2插槽均來自于PCH芯片組,如果需要讓NVMe固態硬盤直連延遲較低的CPU PCIE通道,只能向獨立顯卡借道,可能會對游戲性能產生一些影響。而AMD銳龍平臺自誕生之初就考慮到了NVMe固態硬盤對于低延遲的需求,專門為其開辟了直接與CPU對話的通道,無需在存儲和3D游戲性能之間作取舍。

    降溫小竅門:

    X570芯片組由于功能多、性能強,發熱量也相對較高,需要在主板散熱片上配備風扇進行主動散熱。

    不過對噪音有特殊需求的玩家也可以通過本文中介紹的方法來均衡性能與溫度/噪音。在電源選項-更改計劃設置-更改高級電源設置中,展開PCI Express-連接狀態電源管理,將其設定改為“最大電源節省量”,X570平臺將展現出高能效的另一面。

    更改設定之后只需點擊確定或應用按鈕,無需重啟電腦,設置即刻生效。通過HWiNFO64可以看到,安裝在X570主板上的PCIE 4.0固態硬盤海盜船MP600已經進入ASPM L1節能狀態。

    鏈接狀態電源管理同時適用于各種通過PCIE鏈接的設備,開啟ASPM之后,NVMe固態硬盤和X570芯片組的發熱量都將大幅下降。AIDA64中傳感器讀數:X570芯片組的待機溫度下降5度、PCH二極管待機溫度下降10度。

    對于連接到CPU PCIE通道(靠近CPU位置的M.2插槽)的海盜船MP600,性能基本不會受到影響:

    最終幻想14 Benchmark的游戲加載時間基本正常:

    而連接至芯片組PCIE通道(靠近芯片組的M.2插槽)的海盜船MP600會出現明顯的隨機讀寫效能下降,反映了ASPM節能對于芯片組的影響。

    最終幻想14 Benchmark中的游戲加載時間較平時延長10秒以上,接近于翻倍。不過好在AMD銳龍平臺都具備CPU PCIE直連M.2固態硬盤插槽,在安裝NVMe固態硬盤的問題上不會遇到太多麻煩。

    除了通過PCIE鏈接狀態電源管理設置去影響主板芯片組發熱之外,當前各主板制造商已經通過優化風扇控制曲線,盡可能地降低了芯片組散熱風扇噪音,絕大多數情況下它的噪音會被CPU及GPU散熱風扇所掩蓋,不會影響到大家追求寧靜的目標。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有