libsvm python模型秒变API?MLServer这招绝了,不用Flask也能跑 你有没有碰到过这种情形, 就是当你训练好了一个新的模型之后, 有时候你不想费神去编写那个Flask Code也就是web框架, 也不想把模型进行容器化并且在某个环境里运行它, 只是想要借助API马上就能使用这个模型?要是你存在这样的需求, 那必然是会希望去了解的。它属于是一个基于某种情况的推理服务器, 近期推出了有着GA遗传算法的版本, 而这是一款专门为生产环境所设计构造的具备高性能的服务器。使用它, 能够确保, 在本地构建模型, 且这种构建的模型, 与投入生产环境后的模型, 是保持一致状态的。本文以几个图像模型为例向您介绍如何使用 。数据集我们所要运用的数据集是MNIST, 其所包含的是张数为70,000的灰度呈现的、像素为28x28的有关服装的图像, 这些图像覆盖了10个不一样的类别具体像上衣、连衣裙、外套、裤子等等。若您打算令本文里的代码再现, 务必要保证把文件下载下来, 且将其解开压缩, 放置到名为 data 的地方, 鉴于文件个头极度大, 存储库里把它们给省略掉了。1.训练 -learn 模型首先, 我们会运用 -learn 构架去训练一个支持向量机, 简称为 SVM, 的模型。而后, 我们要把模型存放至一个称作 -MNIST 的文件里边。import pandas as pd from sklearn import svm import time import joblib #Load Training Data train pd.read_csv(../../data/fashion-mnist_train.csv, header0) y_train train[label] X_train train.drop([label], axis1) classifier svm.SVC(kernelpoly, degree4, gamma0.1) #Train Model start time.time() classifier.fit(X_train.values, y_train.values) end time.time() exec_time end-start print(fExecution time: {exec_time} seconds) #Save Model joblib.dump(classifier, Fashion-MNIST.joblib)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.须留意, SVM算法并非格外适配大型数据集, 缘由在于其具备二次性质。依据您的硬件状况, 在此示例里的模型将会耗费几分钟时间来进行训练。2.服务于 -learn 模型经循着上面那些步骤, 我们获取到了一个名为MNIST的模型文件, 紧接着, 来瞧瞧怎样借助它去提供服务。首先通过如下命令安装 pip 。尽管额外的运行时组件属于可选范畴, 然而在服务模型之际会更为顺畅, 故而我们也会去安装 -Learn 以及 的扩展。完成pip - -操作后就需要添加如下两个配置文件1.json- 这包含服务器本身的配置。2.model-.json- , 按字面意思理解, 这个文件里面涵盖着将要去运行的模型配置。对于.json文件只定义一个参数就足够了{ debug: true }1.2.3.这一model-.json的文件, 是需要更多信息的, 原因在于它务必要知晓服务之中的模型信息。{ name: fashion-sklearn, implementation: mlserver_sklearn.SKLearnModel, parameters: { uri: ./Fashion_MNIST.joblib, version: v1 } }1.2.3.4.5.6.7.8.name参数给出了唯一识标, 它在多个模型的服务情形之际很有用处, 这一点过后会提及。要去界定以便预建起服务器, 假若存在这种服务器的话。它跟在训练模型所运用的机器学习框架紧密相连。于我们的实例当中运用 -learn去训练模型, 因而会借助 -learn来达成。配置之时得给出模型文件的所在位置以及版本编号。经过之上提及的配置, 便能够运用如下命令来给我们的模型予以服务: start。简单来讲, 当下已然使得模型于本地服务器那儿运行起来了。此刻, 其现已能够接纳诸如 HTTP 以及 gRPC默认端口是 8080 和 8081这般的请求了。3.测试模型模型已然启动, 且在正常运行着, 此刻, 让我们去发送一些请求, 以此来测试它的运行状况。我们会通过如下URL 发送一个 POST 请求:8080/v2/////infer此URL所表达的意思是, 去访问先前训练好的那个-lea模型, 在此处, 仅仅需要把带有-的模型名字予以替换, 与此同时, 还得把之以v1去进行替换才行。下述代码呈现怎样去导入测试数据, 朝着模型服务器发出请求, 接着把结果跟实际标签予以比较。import pandas as pd import requests #Import test data, grab the first row and corresponding label test pd.read_csv(../../data/fashion-mnist_test.csv, header0) y_test test[label][0:1] X_test test.drop([label],axis1)[0:1] #Prediction request parameters inference_request { inputs: [ { name: predict, shape: X_test.shape, datatype: FP64, data: X_test.values.tolist() } ] } endpoint http://localhost:8080/v2/models/fashion-sklearn/versions/v1/infer #Make request and print response response requests.post(endpoint, jsoninference_request) print(response.text) print(y_test.values)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.运行上面的test.py之后会从 得到以下响应model_name: fashion-sklearn, model_version: v1, id: 31c3fa70-2e56-49b1-bcec-294452dbe73c, parameters: null, outputs: [ { name: predict, shape: [ 1 ], datatype: INT64, parameters: null, data: [ 0 ] } ] }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.知道从响应里能够晓得, 生成可了一个请求身份标识, 并且自动添加上了给服务请求所用的模型以及版本的元数据。一旦模型投入进产品生产环节, 收集类似这般的的元数据就变得格外重要起来。它能让我们记录每一个请求, 进而便利地开展审计以及故障排查工作。您或许也留意到, 返回一个数组。尽管于请求里仅发送了一行数据, 然而处理批量请求, 且一并返回。我们甚至能够借助一种称作自适应批处理的技术, 来优化在生产环境中处理多个请求的方式。于上述其中示例里, 亦能够找寻到模型所预测出的结果。.data显示模型已将这个样本标记成了类别0数值0对应着类别t-shirt/top此般情况下此样本的真实的标签0也是如此, 所以能够证实模型得到的是正确的预测。4.训练 模型依循上面所举的例子, 我们知悉了怎样去运用, 从而创建单个模型, 紧接着, 让我们瞧瞧该如何处置, 在不同框架里训练的多个模型。依旧使用 MNIST 数据集但这次将训练模型。import pandas as pd import xgboost as xgb import time #Load Training Data train pd.read_csv(../../data/fashion-mnist_train.csv, header0) y_train train[label] X_train train.drop([label], axis1) dtrain xgb.DMatrix(X_train.values, labely_train.values) #Train Model params { max_depth: 5, eta: 0.3, verbosity: 1, objective: multi:softmax, num_class : 10 } num_round 50 start time.time() bstmodel xgb.train(params, dtrain, num_round, evals[(dtrain, label)], verbose_eval10) end time.time() exec_time end-start print(fExecution time: {exec_time} seconds) #Save Model bstmodel.save_model(Fashion_MNIST.json)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.上边用来训练模型的代码, 跟之前用来训练 -learn 模型的代码相似, 然而这次, 为了让我们的模型兼容 的格式, 把它存成了.json 文件。5.服务多个模型主要的一个优点在于能够支持多模型服务, 这所蕴含的意思是, 不需要针对所部署的每个ML模型去创建或者运行新的服务器, 借助上述构建而成的模型, 会运用这个功能同时为它们供给服务。一旦启动, 它会于目录以及其中任何子目录里搜寻model-.json文件。要是您存在多个model-.json文件, 那它会自动给所有文件赋予服务。留意: 您依旧仅需指明根目录里的那种, 服务器配置文件.json。这是目录结构的细分以供参考. ├── data │ ├── fashion-mnist_test.csv │ └── fashion-mnist_train.csv ├── models │ ├── sklearn │ │ ├── Fashion_MNIST.joblib │ │ ├── model-settings.json │ │ ├── test.py │ │ └── train.py │ └── xgboost │ ├── Fashion_MNIST.json │ ├── model-settings.json │ ├── test.py │ └── train.py ├── README.md ├── settings.json └── test_models.py1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.提请留意着, 存在着两个名为model-.json的文件, 其中一个是应用于-learn模型的, 另一个是应用于另一模型的。现在可以运行 start .它将开始处理两个模型的请求。[mlserver] INFO - Loaded model fashion-sklearn succesfully. [mlserver] INFO - Loaded model fashion-xgboost succesfully.1.2.6.测试多个模型的准确性当前, 有着两个模型, 它们都处于运行的状态, 且运行的平台是特定的那个, 在这里, 我们能够运用测试集中所包含的样本, 以此用来验证每一个模型所具备的准确性。有这样一段代码, 它会向每一个模型送去一个批处理请求, 此请求涵盖完整的测试集, 将预测值跟真实标签予以比较, 在整个测试集上去执行这个操作, 这为我们给出了衡量每个模型准确性的方式, 并且会把最终结果打印出来。import pandas as pd import requests import json #Import the test data and split the data from the labels test pd.read_csv(./data/fashion-mnist_test.csv, header0) y_test test[label] X_test test.drop([label],axis1) #Build the inference request inference_request { inputs: [ { name: predict, shape: X_test.shape, datatype: FP64, data: X_test.values.tolist() } ] } #Send the prediction request to the relevant model, compare responses to training labels and calculate accuracy def infer(model_name, version): endpoint fhttp://localhost:8080/v2/models/{model_name}/versions/{version}/infer response requests.post(endpoint, jsoninference_request) #calculate accuracy correct 0 for i, prediction in enumerate(json.loads(response.text)[outputs][0][data]): if y_test[i] prediction: correct 1 accuracy correct / len(y_test) print(fModel Accuracy for {model_name}: {accuracy}) infer(fashion-xgboost, v1) infer(fashion-sklearn, v1)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.结果表明 模型略微优于 SVM -learn 模型Model Accuracy for fashion-xgboost: 0.8953 Model Accuracy for fashion-sklearn: 0.8641.2.总结望以之上所述, 您已明晰运用服务模型之大体流程。若欲知悉更多讯息, 您得去研读相关文档, 还要查看不同框架之示例。若是用户, 能够运用来在里提供予以模型, 倘若当作用户, 即应明确知晓Core, 它是一个把模型部署到的开源工具, 其在后台运用。WWw.M.nffqi.cN/Article/details/309390.shtmlWWw.M.nffqi.cN/Article/details/194530.shtmlWWw.M.nffqi.cN/Article/details/393874.shtmlWWw.M.nffqi.cN/Article/details/445304.shtmlWWw.M.nffqi.cN/Article/details/987391.shtmlWWw.M.nffqi.cN/Article/details/323542.shtmlWWw.M.nffqi.cN/Article/details/934783.shtmlWWw.M.nffqi.cN/Article/details/148240.shtmlWWw.M.nffqi.cN/Article/details/794720.shtmlWWw.M.nffqi.cN/Article/details/383183.shtmlWWw.M.nffqi.cN/Article/details/669542.shtmlWWw.M.nffqi.cN/Article/details/650828.shtmlWWw.M.nffqi.cN/Article/details/847151.shtmlWWw.M.nffqi.cN/Article/details/108858.shtmlWWw.M.nffqi.cN/Article/details/827150.shtmlWWw.M.nffqi.cN/Article/details/169663.shtmlWWw.M.nffqi.cN/Article/details/534983.shtmlWWw.M.nffqi.cN/Article/details/978123.shtmlWWw.M.nffqi.cN/Article/details/740514.shtmlWWw.M.nffqi.cN/Article/details/034841.shtmlWWw.M.nffqi.cN/Article/details/530888.shtmlWWw.M.nffqi.cN/Article/details/037664.shtmlWWw.M.nffqi.cN/Article/details/304897.shtmlWWw.M.nffqi.cN/Article/details/003532.shtmlWWw.M.nffqi.cN/Article/details/291126.shtmlWWw.M.nffqi.cN/Article/details/703704.shtmlWWw.M.nffqi.cN/Article/details/893196.shtmlWWw.M.nffqi.cN/Article/details/333619.shtmlWWw.M.nffqi.cN/Article/details/712624.shtmlWWw.M.nffqi.cN/Article/details/558887.shtmlWWw.M.nffqi.cN/Article/details/993615.shtmlWWw.M.nffqi.cN/Article/details/464237.shtmlWWw.M.nffqi.cN/Article/details/973204.shtmlWWw.M.nffqi.cN/Article/details/738562.shtmlWWw.M.nffqi.cN/Article/details/222772.shtmlWWw.M.nffqi.cN/Article/details/081270.shtmlWWw.M.nffqi.cN/Article/details/450371.shtmlWWw.M.nffqi.cN/Article/details/693987.shtmlWWw.M.nffqi.cN/Article/details/570090.shtmlWWw.M.nffqi.cN/Article/details/910043.shtmlWWw.M.nffqi.cN/Article/details/416849.shtmlWWw.M.nffqi.cN/Article/details/179283.shtmlWWw.M.nffqi.cN/Article/details/779511.shtmlWWw.M.nffqi.cN/Article/details/867623.shtmlWWw.M.nffqi.cN/Article/details/861047.shtmlWWw.M.nffqi.cN/Article/details/073760.shtmlWWw.M.nffqi.cN/Article/details/322279.shtmlWWw.M.nffqi.cN/Article/details/021371.shtmlWWw.M.nffqi.cN/Article/details/381681.shtmlWWw.M.nffqi.cN/Article/details/293551.shtmlWWw.M.nffqi.cN/Article/details/436024.shtmlWWw.M.nffqi.cN/Article/details/802886.shtmlWWw.M.nffqi.cN/Article/details/640518.shtmlWWw.M.nffqi.cN/Article/details/563479.shtmlWWw.M.nffqi.cN/Article/details/364609.shtmlWWw.M.nffqi.cN/Article/details/436952.shtmlWWw.M.nffqi.cN/Article/details/433020.shtmlWWw.M.nffqi.cN/Article/details/075271.shtmlWWw.M.nffqi.cN/Article/details/039176.shtmlWWw.M.nffqi.cN/Article/details/458304.shtmlWWw.M.nffqi.cN/Article/details/004400.shtmlWWw.M.nffqi.cN/Article/details/873597.shtmlWWw.M.nffqi.cN/Article/details/332401.shtmlWWw.M.nffqi.cN/Article/details/256005.shtmlWWw.M.nffqi.cN/Article/details/633507.shtmlWWw.M.nffqi.cN/Article/details/484234.shtmlWWw.M.nffqi.cN/Article/details/903360.shtmlWWw.M.nffqi.cN/Article/details/450203.shtmlWWw.M.nffqi.cN/Article/details/916639.shtmlWWw.M.nffqi.cN/Article/details/641850.shtmlWWw.M.nffqi.cN/Article/details/303898.shtmlWWw.M.nffqi.cN/Article/details/894479.shtmlWWw.M.nffqi.cN/Article/details/184523.shtmlWWw.M.nffqi.cN/Article/details/662069.shtmlWWw.M.nffqi.cN/Article/details/632003.shtmlWWw.M.nffqi.cN/Article/details/699185.shtmlWWw.M.nffqi.cN/Article/details/330990.shtmlWWw.M.nffqi.cN/Article/details/176144.shtmlWWw.M.nffqi.cN/Article/details/897106.shtmlWWw.M.nffqi.cN/Article/details/853334.shtmlWWw.M.nffqi.cN/Article/details/329565.shtmlWWw.M.nffqi.cN/Article/details/092396.shtmlWWw.M.nffqi.cN/Article/details/956718.shtmlWWw.M.nffqi.cN/Article/details/424671.shtmlWWw.M.nffqi.cN/Article/details/351311.shtmlWWw.M.nffqi.cN/Article/details/658095.shtmlWWw.M.nffqi.cN/Article/details/899843.shtmlWWw.M.nffqi.cN/Article/details/216099.shtmlWWw.M.nffqi.cN/Article/details/052279.shtmlWWw.M.nffqi.cN/Article/details/213053.shtmlWWw.M.nffqi.cN/Article/details/042686.shtmlWWw.M.nffqi.cN/Article/details/713647.shtmlWWw.M.nffqi.cN/Article/details/021862.shtmlWWw.M.nffqi.cN/Article/details/950243.shtmlWWw.M.nffqi.cN/Article/details/708179.shtmlWWw.M.nffqi.cN/Article/details/664937.shtmlWWw.M.nffqi.cN/Article/details/575126.shtmlWWw.M.nffqi.cN/Article/details/194575.shtmlWWw.M.nffqi.cN/Article/details/717661.shtmlWWw.M.nffqi.cN/Article/details/262819.shtmlWWw.M.nffqi.cN/Article/details/084260.shtmlWWw.M.nffqi.cN/Article/details/699610.shtmlWWw.M.nffqi.cN/Article/details/969200.shtmlWWw.M.nffqi.cN/Article/details/533931.shtmlWWw.M.nffqi.cN/Article/details/016782.shtmlWWw.M.nffqi.cN/Article/details/033769.shtmlWWw.M.nffqi.cN/Article/details/824593.shtmlWWw.M.nffqi.cN/Article/details/437022.shtmlWWw.M.nffqi.cN/Article/details/089687.shtmlWWw.M.nffqi.cN/Article/details/577536.shtmlWWw.M.nffqi.cN/Article/details/147542.shtmlWWw.M.nffqi.cN/Article/details/001790.shtmlWWw.M.nffqi.cN/Article/details/991019.shtmlWWw.M.nffqi.cN/Article/details/906831.shtmlWWw.M.nffqi.cN/Article/details/361533.shtmlWWw.M.nffqi.cN/Article/details/368641.shtmlWWw.M.nffqi.cN/Article/details/637943.shtmlWWw.M.nffqi.cN/Article/details/643369.shtmlWWw.M.nffqi.cN/Article/details/119889.shtmlWWw.M.nffqi.cN/Article/details/001788.shtmlWWw.M.nffqi.cN/Article/details/661574.shtmlWWw.M.nffqi.cN/Article/details/491834.shtmlWWw.M.nffqi.cN/Article/details/650884.shtmlWWw.M.nffqi.cN/Article/details/320622.shtmlWWw.M.nffqi.cN/Article/details/069705.shtmlWWw.M.nffqi.cN/Article/details/127104.shtmlWWw.M.nffqi.cN/Article/details/350967.shtmlWWw.M.nffqi.cN/Article/details/143750.shtmlWWw.M.nffqi.cN/Article/details/803294.shtmlWWw.M.nffqi.cN/Article/details/709145.shtmlWWw.M.nffqi.cN/Article/details/454660.shtmlWWw.M.nffqi.cN/Article/details/569047.shtmlWWw.M.nffqi.cN/Article/details/078018.shtmlWWw.M.nffqi.cN/Article/details/234936.shtmlWWw.M.nffqi.cN/Article/details/453469.shtmlWWw.M.nffqi.cN/Article/details/171249.shtmlWWw.M.nffqi.cN/Article/details/883606.shtmlWWw.M.nffqi.cN/Article/details/191825.shtmlWWw.M.nffqi.cN/Article/details/303884.shtmlWWw.M.nffqi.cN/Article/details/809979.shtmlWWw.M.nffqi.cN/Article/details/987173.shtmlWWw.M.nffqi.cN/Article/details/465972.shtmlWWw.M.nffqi.cN/Article/details/859276.shtmlWWw.M.nffqi.cN/Article/details/960483.shtmlWWw.M.nffqi.cN/Article/details/308023.shtmlWWw.M.nffqi.cN/Article/details/555532.shtmlWWw.M.nffqi.cN/Article/details/793549.shtmlWWw.M.nffqi.cN/Article/details/505441.shtmlWWw.M.nffqi.cN/Article/details/899911.shtmlWWw.M.nffqi.cN/Article/details/509961.shtmlWWw.M.nffqi.cN/Article/details/543890.shtmlWWw.M.nffqi.cN/Article/details/342608.shtmlWWw.M.nffqi.cN/Article/details/696814.shtmlWWw.M.nffqi.cN/Article/details/744025.shtmlWWw.M.nffqi.cN/Article/details/134183.shtmlWWw.M.nffqi.cN/Article/details/871265.shtmlWWw.M.nffqi.cN/Article/details/116248.shtmlWWw.M.nffqi.cN/Article/details/680304.shtmlWWw.M.nffqi.cN/Article/details/694683.shtmlWWw.M.nffqi.cN/Article/details/630111.shtmlWWw.M.nffqi.cN/Article/details/644647.shtmlWWw.M.nffqi.cN/Article/details/915597.shtmlWWw.M.nffqi.cN/Article/details/939582.shtmlWWw.M.nffqi.cN/Article/details/583724.shtmlWWw.M.nffqi.cN/Article/details/848589.shtmlWWw.M.nffqi.cN/Article/details/111908.shtmlWWw.M.nffqi.cN/Article/details/254696.shtmlWWw.M.nffqi.cN/Article/details/406288.shtmlWWw.M.nffqi.cN/Article/details/676505.shtmlWWw.M.nffqi.cN/Article/details/000704.shtmlWWw.M.nffqi.cN/Article/details/148191.shtmlWWw.M.nffqi.cN/Article/details/093762.shtmlWWw.M.nffqi.cN/Article/details/539677.shtmlWWw.M.nffqi.cN/Article/details/382812.shtmlWWw.M.nffqi.cN/Article/details/826759.shtmlWWw.M.nffqi.cN/Article/details/899994.shtmlWWw.M.nffqi.cN/Article/details/113803.shtmlWWw.M.nffqi.cN/Article/details/004045.shtmlWWw.M.nffqi.cN/Article/details/432403.shtmlWWw.M.nffqi.cN/Article/details/385086.shtmlWWw.M.nffqi.cN/Article/details/577939.shtmlWWw.M.nffqi.cN/Article/details/965955.shtmlWWw.M.nffqi.cN/Article/details/400467.shtmlWWw.M.nffqi.cN/Article/details/329649.shtmlWWw.M.nffqi.cN/Article/details/124272.shtmlWWw.M.nffqi.cN/Article/details/588470.shtmlWWw.M.nffqi.cN/Article/details/416867.shtmlWWw.M.nffqi.cN/Article/details/741709.shtmlWWw.M.nffqi.cN/Article/details/380772.shtmlWWw.M.nffqi.cN/Article/details/116078.shtmlWWw.M.nffqi.cN/Article/details/851188.shtmlWWw.M.nffqi.cN/Article/details/890929.shtmlWWw.M.nffqi.cN/Article/details/221354.shtmlWWw.M.nffqi.cN/Article/details/869367.shtmlWWw.M.nffqi.cN/Article/details/768705.shtmlWWw.M.nffqi.cN/Article/details/217739.shtmlWWw.M.nffqi.cN/Article/details/261901.shtmlWWw.M.nffqi.cN/Article/details/489023.shtmlWWw.M.nffqi.cN/Article/details/569264.shtmlWWw.M.nffqi.cN/Article/details/781022.shtmlWWw.M.nffqi.cN/Article/details/786003.shtmlWWw.M.nffqi.cN/Article/details/541656.shtmlWWw.M.nffqi.cN/Article/details/484876.shtmlWWw.M.nffqi.cN/Article/details/148176.shtmlWWw.M.nffqi.cN/Article/details/368754.shtmlWWw.M.nffqi.cN/Article/details/290934.shtmlWWw.M.nffqi.cN/Article/details/758377.shtmlWWw.M.nffqi.cN/Article/details/636378.shtmlWWw.M.nffqi.cN/Article/details/228126.shtmlWWw.M.nffqi.cN/Article/details/029295.shtmlWWw.M.nffqi.cN/Article/details/917042.shtmlWWw.M.nffqi.cN/Article/details/082234.shtmlWWw.M.nffqi.cN/Article/details/670944.shtmlWWw.M.nffqi.cN/Article/details/408356.shtmlWWw.M.nffqi.cN/Article/details/037164.shtmlWWw.M.nffqi.cN/Article/details/870182.shtmlWWw.M.nffqi.cN/Article/details/506091.shtmlWWw.M.nffqi.cN/Article/details/631544.shtmlWWw.M.nffqi.cN/Article/details/030380.shtmlWWw.M.nffqi.cN/Article/details/227294.shtmlWWw.M.nffqi.cN/Article/details/337391.shtmlWWw.M.nffqi.cN/Article/details/466303.shtmlWWw.M.nffqi.cN/Article/details/019576.shtmlWWw.M.nffqi.cN/Article/details/751878.shtmlWWw.M.nffqi.cN/Article/details/185173.shtmlWWw.M.nffqi.cN/Article/details/575216.shtmlWWw.M.nffqi.cN/Article/details/697997.shtmlWWw.M.nffqi.cN/Article/details/845995.shtmlWWw.M.nffqi.cN/Article/details/514171.shtmlWWw.M.nffqi.cN/Article/details/199970.shtmlWWw.M.nffqi.cN/Article/details/214742.shtmlWWw.M.nffqi.cN/Article/details/127301.shtmlWWw.M.nffqi.cN/Article/details/055269.shtmlWWw.M.nffqi.cN/Article/details/566826.shtmlWWw.M.nffqi.cN/Article/details/892809.shtmlWWw.M.nffqi.cN/Article/details/558114.shtmlWWw.M.nffqi.cN/Article/details/627651.shtmlWWw.M.nffqi.cN/Article/details/785901.shtmlWWw.M.nffqi.cN/Article/details/504988.shtmlWWw.M.nffqi.cN/Article/details/556071.shtmlWWw.M.nffqi.cN/Article/details/072834.shtmlWWw.M.nffqi.cN/Article/details/192647.shtmlWWw.M.nffqi.cN/Article/details/076529.shtmlWWw.M.nffqi.cN/Article/details/631082.shtmlWWw.M.nffqi.cN/Article/details/852996.shtmlWWw.M.nffqi.cN/Article/details/363032.shtmlWWw.M.nffqi.cN/Article/details/394533.shtmlWWw.M.nffqi.cN/Article/details/735831.shtmlWWw.M.nffqi.cN/Article/details/805350.shtmlWWw.M.nffqi.cN/Article/details/764132.shtmlWWw.M.nffqi.cN/Article/details/473328.shtmlWWw.M.nffqi.cN/Article/details/317231.shtmlWWw.M.nffqi.cN/Article/details/374085.shtmlWWw.M.nffqi.cN/Article/details/740219.shtmlWWw.M.nffqi.cN/Article/details/858368.shtmlWWw.M.nffqi.cN/Article/details/239887.shtmlWWw.M.nffqi.cN/Article/details/470385.shtmlWWw.M.nffqi.cN/Article/details/206640.shtmlWWw.M.nffqi.cN/Article/details/727352.shtmlWWw.M.nffqi.cN/Article/details/954810.shtmlWWw.M.nffqi.cN/Article/details/156222.shtmlWWw.M.nffqi.cN/Article/details/889403.shtmlWWw.M.nffqi.cN/Article/details/717335.shtmlWWw.M.nffqi.cN/Article/details/887965.shtmlWWw.M.nffqi.cN/Article/details/347193.shtmlWWw.M.nffqi.cN/Article/details/014952.shtmlWWw.M.nffqi.cN/Article/details/309596.shtmlWWw.M.nffqi.cN/Article/details/034937.shtmlWWw.M.nffqi.cN/Article/details/186086.shtmlWWw.M.nffqi.cN/Article/details/984511.shtmlWWw.M.nffqi.cN/Article/details/934002.shtmlWWw.M.nffqi.cN/Article/details/319672.shtmlWWw.M.nffqi.cN/Article/details/919389.shtmlWWw.M.nffqi.cN/Article/details/385257.shtmlWWw.M.nffqi.cN/Article/details/830600.shtmlWWw.M.nffqi.cN/Article/details/342782.shtmlWWw.M.nffqi.cN/Article/details/309574.shtmlWWw.M.nffqi.cN/Article/details/610735.shtmlWWw.M.nffqi.cN/Article/details/772079.shtmlWWw.M.nffqi.cN/Article/details/797422.shtmlWWw.M.nffqi.cN/Article/details/284051.shtmlWWw.M.nffqi.cN/Article/details/216848.shtmlWWw.M.nffqi.cN/Article/details/841090.shtmlWWw.M.nffqi.cN/Article/details/605241.shtmlWWw.M.nffqi.cN/Article/details/691085.shtmlWWw.M.nffqi.cN/Article/details/267729.shtmlWWw.M.nffqi.cN/Article/details/401179.shtmlWWw.M.nffqi.cN/Article/details/343631.shtmlWWw.M.nffqi.cN/Article/details/650301.shtmlWWw.M.nffqi.cN/Article/details/468631.shtmlWWw.M.nffqi.cN/Article/details/084102.shtmlWWw.M.nffqi.cN/Article/details/004956.shtmlWWw.M.nffqi.cN/Article/details/662960.shtmlWWw.M.nffqi.cN/Article/details/825352.shtmlWWw.M.nffqi.cN/Article/details/770448.shtmlWWw.M.nffqi.cN/Article/details/264615.shtmlWWw.M.nffqi.cN/Article/details/942844.shtmlWWw.M.nffqi.cN/Article/details/095407.shtmlWWw.M.nffqi.cN/Article/details/748304.shtmlWWw.M.nffqi.cN/Article/details/766215.shtmlWWw.M.nffqi.cN/Article/details/407182.shtmlWWw.M.nffqi.cN/Article/details/021020.shtmlWWw.M.nffqi.cN/Article/details/965566.shtmlWWw.M.nffqi.cN/Article/details/848453.shtmlWWw.M.nffqi.cN/Article/details/282318.shtmlWWw.M.nffqi.cN/Article/details/991282.shtmlWWw.M.nffqi.cN/Article/details/379135.shtmlWWw.M.nffqi.cN/Article/details/311331.shtmlWWw.M.nffqi.cN/Article/details/346459.shtmlWWw.M.nffqi.cN/Article/details/301891.shtmlWWw.M.nffqi.cN/Article/details/140413.shtmlWWw.M.nffqi.cN/Article/details/210680.shtmlWWw.M.nffqi.cN/Article/details/737453.shtmlWWw.M.nffqi.cN/Article/details/110648.shtmlWWw.M.nffqi.cN/Article/details/481586.shtmlWWw.M.nffqi.cN/Article/details/357763.shtmlWWw.M.nffqi.cN/Article/details/219585.shtmlWWw.M.nffqi.cN/Article/details/278044.shtmlWWw.M.nffqi.cN/Article/details/930024.shtmlWWw.M.nffqi.cN/Article/details/074597.shtmlWWw.M.nffqi.cN/Article/details/413842.shtmlWWw.M.nffqi.cN/Article/details/516137.shtmlWWw.M.nffqi.cN/Article/details/400957.shtmlWWw.M.nffqi.cN/Article/details/835304.shtmlWWw.M.nffqi.cN/Article/details/278214.shtmlWWw.M.nffqi.cN/Article/details/516459.shtmlWWw.M.nffqi.cN/Article/details/974848.shtmlWWw.M.nffqi.cN/Article/details/758400.shtmlWWw.M.nffqi.cN/Article/details/670985.shtmlWWw.M.nffqi.cN/Article/details/796937.shtmlWWw.M.nffqi.cN/Article/details/810411.shtmlWWw.M.nffqi.cN/Article/details/078233.shtmlWWw.M.nffqi.cN/Article/details/984930.shtmlWWw.M.nffqi.cN/Article/details/068125.shtmlWWw.M.nffqi.cN/Article/details/911018.shtmlWWw.M.nffqi.cN/Article/details/132901.shtmlWWw.M.nffqi.cN/Article/details/641033.shtmlWWw.M.nffqi.cN/Article/details/606036.shtmlWWw.M.nffqi.cN/Article/details/013112.shtmlWWw.M.nffqi.cN/Article/details/172100.shtmlWWw.M.nffqi.cN/Article/details/187135.shtmlWWw.M.nffqi.cN/Article/details/644057.shtmlWWw.M.nffqi.cN/Article/details/197292.shtmlWWw.M.nffqi.cN/Article/details/995494.shtmlWWw.M.nffqi.cN/Article/details/782093.shtmlWWw.M.nffqi.cN/Article/details/981954.shtmlWWw.M.nffqi.cN/Article/details/315342.shtmlWWw.M.nffqi.cN/Article/details/696285.shtmlWWw.M.nffqi.cN/Article/details/812113.shtmlWWw.M.nffqi.cN/Article/details/694965.shtml