当前位置: 首页 > 工具软件 > Molten > 使用案例 >

php molten,当molten遇到机器学习

严正诚
2023-12-01

当molten遇到机器学习

molten

molten是一个链路追踪的php扩展, git地址:molten

它能够用来构建php全链路追踪系统, 这个在上一篇的blog中已经介绍过了《Molten 功能简介以及使用指南》

在如今机器学习如火如荼的今天, 全链路追踪系统和机器学习相结合 和爆发出怎样的火花? 下面让我们玩转起来这个追踪系统。

机器学习

在ai人工智能越来越完善的今天, php也有了自己能够应用得上的人工智能库了 - PHP-ML 其中已经包含了常用的机器学习的算法, 数据处理的简单工具。 能够满足我们当前的学习内容

数据训练

收集单台机器上某个应用的tracing log, 将其中http/redis/memcached/mysql 的单个request的调用次数以及整个request的请求时间获取出来,将其信息整理为cvs文件,作为我们的训练数据。

文件内容如下:

3,7,0,10626

0,2,0,4386

0,3,0,17755

0,2,0,2584

0,2,0,3468

3,4,0,5469

0,4,0,2570

我们采用svr (support vector regression)进行模型的训练。将外部组件和php执行时间的调用关系整理处理

训练代码如下:

$dataset = new \Phpml\Dataset\CsvDataset('example.cvs', 4, true);

// split dataset

$split = new \Phpml\CrossValidation\RandomSplit($dataset, 0.2);

echo " start train .........\n";

// support vector regression

$svr = new \Phpml\Regression\SVR(\Phpml\SupportVectorMachine\Kernel::POLYNOMIAL, $degree = 3);

$svr->train($split->getTrainSamples(), $split->getTrainLabels());

echo " end training ..... \n";

$testSamples = $split->getTestSamples();

$testLabel = $split->getTestLabels();

foreach ($testSamples as $key => $sample) {

echo "predict: " . $svr->predict($sample) . ' Accuracy: '. $testLabel[$key] . "\n";

}

//echo $svr->predict([0, 1, 1]);

$moduleManager = new \Phpml\ModelManager();

$moduleManager->saveToFile($svr, './svr');

最终我们能够得到一个组件调用和整体时间的非线性模型。 根据这个模型我们能够在一定范围内 预测我们应用时间相应的合理响应时间。

让你的应用说话

例子中只是应用了一个最为简单的机器学习的例子。

我们根据抓取到的组件信息, 我们能够构建出一个关于应用的整体模型, 比如组件和组件的关系, 响应时间和调用链的关系, 应用的聚类等等, 信息越多,我们能够推测出的信息就越多。

最终让数据跟我们对话。

 类似资料: