ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

libsvm python模型秒变API?MLServer这招绝了,不用Flask也能跑

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
返回列表