如何开始自己的家庭实验室进行数据分析的完整指南
现在是开始构建数据科学个人实验室的最佳时机,以分析对您有用的数据,存储重要信息或开发自己的技术技能。
我在Reddit上的一些技术相关的子论坛中多次读到过这样一句话:“为云服务付费就是租用别人的计算机。” 虽然我认为云计算和存储可以非常有用,但本文将重点介绍我将分析、数据存储和工具从在线提供商转移到家庭办公室的原因之一。我还提供了我用于此目的的工具和硬件的链接。
介绍
开始解释我的方法的最佳方式是分享一个我遇到的商业问题。虽然我是一个风险低的传统投资者,但我内心还有一丝希望,也许,只是也许,我可以成为少于1%的人之一,超越标普500指数。请注意,我使用了“希望”这个词,因此不要在这个希望上押太多注。每年我会给我的Robinhood账户100美元,并像对待彩票一样认真对待它——希望赚大钱。不过,我要让大家放心,这个账户与我的较大的基于指数基金的账户是分开的,后者通常具有适度的回报,还有一些我会不断出售认购期权的价值股票。然而,我的Robinhood账户几乎是赌博,任何事情都可能发生。不过,我给自己定了几个规则:
- 我从不使用任何保证金。
- 我从不卖出未加保险的期权,只买入开仓。
- 我不把钱花在追逐亏损的交易上。
您可能会想我要说什么,我将从我的离题中回到主题,分享我的“彩票”并没有赚到让我能够买下杰夫·贝佐斯(Jeff Bezos)的游艇,但它教会了我很多有关风险和损失的知识。这些教训也激发了我内心的数据爱好者,尝试改进我量化风险和尝试预测市场趋势和事件的方式。即使是在短期内方向正确的模型也可以为投资者(零售和对冲基金)提供巨大的价值。
我认为改进决策的第一步是需要有可用于数据驱动决策的数据。从投资中移除情感是一个众所周知的成功提示。尽管股票和ETF的历史数据是广泛可用的,并通过诸如yfinance之类的资源开源,但衍生历史数据集的成本要高得多,而且很难获得。可用API的一些初步概览提示,为我的投资组合定期访问数据以进行策略回测可能会花费我每年数百美元,甚至可能是每月,这取决于我寻求的粒度。
使用Python和Plotly绘制金融数据和多个重叠趋势
Plotly为Python开发人员提供了灵活性,可以利用蜡烛图和其他各种绘图工具进行建模…
wire.insiderfinance.io
我决定在这个过程中更多地投资于自己,并以我自己的方式花费数百美元。*观众们嗤之以鼻*
云构建
我的第一反应是使用我在工作中每天使用的相同工具进行数据爬取和仓库管理。我创建了一个个人的AWS账户,并编写了Python脚本以在Lambda上部署,以在预定的时间间隔内爬取免费的、实时的期权数据集,并代表我编写数据。这是一个完全自动化的系统,因为我的投资组合中的每个股票代码都将动态地启动不同的爬取程序。编写数据比较具有挑战性,我夹在两条路之间。我可以将数据写入S3,使用Glue进行爬取,并在Athena中使用无服务器查询进行分析,或者我可以使用关系型数据库服务,直接将我的数据从Lambda写入RDS。
提到的 AWS 工具的快速概述:
Lambda 是无服务器计算,允许用户在没有太多开销的情况下执行脚本,并且拥有非常慷慨的免费层。
S3,又称简单存储服务,是一个对象存储系统,具有相当大的免费层和极具成本效益的存储,每月每 GB 仅需 $0.02。
Glue 是 AWS 的数据准备、集成和 ETL 工具,提供网络爬虫以读取和解释表格数据。
Athena 是一个无服务器查询架构。
最终,我倾向于使用 RDS,只是为了让数据易于查询和监控,没有其他原因。他们还提供了 750 小时免费使用和 20 GB 存储空间的免费层,为我提供了一个不错的沙箱,让我可以尝试新功能。
但是,我没有意识到期权数据有多大。我开始每个股票每个月写入大约 100 MB 的数据,每隔 15 分钟一次,这可能听起来不算多,但考虑到我有 20 个股票的投资组合,在年底之前,我将用完所有的免费层。此外,免费层内的小型计算能力很快被消耗殆尽,我的服务器在我意识到之前就用完了所有的 750 小时(考虑到我想要追踪期权交易大约 一天8小时,一周5天)。我还经常在工作后阅读和分析数据,这也导致了更大的使用量。大约两个月后,我完成了免费层分配,并收到了我的第一份 AWS 账单:大约 60 美元/月。请记住,一旦免费层结束,您将为每个服务器处理时间支付费用,以及每个 GB 的存储费用/月,从 AWS 生态系统到我的本地开发机器的费用。我预计在一个月或两个月内,我的所有权成本可能会增加至少 50%,甚至更多,并继续增加。
![天哪。](https://miro.medium.com/v2/resize:fit:640/format:webp/1*p2TZzh3gbtfFgEXVd5d4SQ.png)
离开云端
此时,我意识到我宁愿把我每月花费在从亚马逊租赁设备上的 60 美元,花在电费上,并把剩下的钱投入我的 Robinhood 账户,回到起点。尽管我很喜欢使用 AWS 工具,但当我的雇主没有支付账单时(对于我的同事们阅读此文,我保证我在工作中也很节俭),我真的不太有兴趣投资于它们。AWS 对于业余爱好者来说价格太高了。他们提供了许多优秀的免费资源供新手学习,并且在专业方面具有良好的性价比,但在当前的中间层面上不是这样。
我有一台旧的 Lenovo Y50–70 笔记本电脑,是我大学前使用的,屏幕坏了,我想重新利用它作为家庭网络爬虫机和 SQL 服务器。虽然它们仍然可以以新品或认证翻新的价格售出(可能是由于 i7 处理器和独立显卡),但我的坏屏幕基本上毁掉了计算机的价值,因此将它作为服务器重新启动了它,并将它三年的灰尘吹走了。我将它设置在我客厅的角落里,放在一个扬声器上(旁边有一个小矮人),并设置为“始终打开”,以实现其新目标。我的女朋友甚至说,电脑键盘的刺眼的红色背光甚至“让房间更有气氛”。
![图片中有一个小矮人,但在拍照时,服务器尚未配置。](https://miro.medium.com/v2/resize:fit:640/format:webp/1*qNQQDeKdTE4EUaE5GPcU8g.jpeg)
方便的是,我的 65 英寸的 Call-of-Duty-可玩认证电视机距离笔记本电脑只有 HDMI 电缆距离,可以看到我正在编写的代码。
我将我的服务器从云端迁移到了我的破旧笔记本电脑上,然后就可以开始使用了!现在,我可以根据电费成本,或每千瓦时约 0.14 美元的价格(每天约 0.20-0.30 美元)执行所有我想要的分析。又过了一个月或两个月,我在本地进行了一些调试和调整。通常这看起来像每周几个小时的工作后打开我的 MacBook,使用来自我的小矮人扬声器服务器的数据进行机器学习模型的试验,使用本地 Plotly 仪表板可视化数据,然后指导我的 Robinhood 投资。
我曾经有一些有限的成功。我会在另一篇小猪AI的文章中分享更多数据和性能指标的细节,但我决定要将我的范围从一台坏掉的笔记本扩展到我自己的微型云。这次,不是租借,而是拥有。
构建家庭实验室
“家庭实验室”听起来非常复杂和酷* 挑起眼镜*,但实际上在分解时相对简单。基本上,我希望解决我的坏掉笔记本设置中的一些挑战,这提供了动力,以及新的目标和可选项,这提供了灵感。
坏掉的笔记本问题:
硬盘旧了,至少5或6年了,这对潜在的未来数据损失构成了风险。在大查询下,它也会显着减慢速度,这是该型号的一个已知问题。
不得不使用电视和蓝牙键盘来使用安装了Windows 10 Home的笔记本非常不方便,也不符合人体工程学原理。
笔记本无法升级,以便在已安装的RAM之外添加更多RAM。
技术在并行任务方面受到限制。
单独的笔记本不足以托管我的SQL服务器以及我的ML模型的仪表板和数据处理。我也不会舒服地在同一台计算机上分享资源,从而影响其他服务。
我要实施的系统必须解决这些问题,但也有新的功能需要实现。
计划的新功能:
一个新的家庭办公室设置,使在家办公更加舒适。
我整个公寓都有以太网布线(如果我支付了整个千兆比特,我会使用整个千兆比特AT&T)。
在适当的情况下使用微型服务器进行分布式计算*。
服务器可以升级和更换。
可部署不同的程序和软件,以独立实现不同的子目标,而不会妨碍当前或并行程序。
*使用我选择的计算机进行分布式计算是一个有争议的话题,将在本文稍后解释。
我花了很多时间进行适当硬件配置的研究。我最喜欢的资源之一是“Project TinyMiniMicro”,它比较了联想ThinkCentre Tiny平台、惠普ProDesk/EliteDesk Mini平台和戴尔OptiPlex Micro平台。我也曾经使用过像Project TMM作者一样的单板计算机,我有两个树莓派和一个Odroid XU4。
我喜欢我的Pis的原因:
它们很小,消耗很少的电力,并且新型号有8GB的RAM。
我喜欢我的Odroid XU4的原因:
它很小,有8个核心,是一个很好的仿真平台。
虽然我相信我的单板计算机仍然会在我的家庭实验室中找到位置,但请记住,我需要处理我想要托管的服务的设备。我还购买了我整个生命中可能最昂贵的Amazon订单,并完全重新装修了我的整个办公室。我的购物车包括:
- 多个Cat6以太网电缆
- RJ45压接工具
- 拉链扎带
- 2台EliteDesk 800 G1 i5 Mini(但被发送到了G2 #Win)
- 1台EliteDesk 800 G4 i7 Mini(并发送了更好的i7处理器#Win)
- 2台ProDesk 600 G3 i5 Mini(并发送了略差的i5 #Karma)
- 额外的RAM
- 多个固态硬盘
- 一张新的办公桌来代替我的credenza/runner
- 新的办公室照明
- 硬盘克隆设备
- 两个8端口网络交换机
- 一个不间断电源
- 打印机
- 机械键盘(相关的,如果有人需要,我还有五个计算机的键盘和鼠标组合)
- 两个新显示器
如果您想查看我的整个零件清单,并链接到每个项目以查看或自己购买,请随时访问我的网站以获取完整列表。
一旦我的“夏季的圣诞节”到了,一堆箱子就被送到了我家门口,真正的乐趣开始了。第一步是在我家里连接以太网。安装师傅默认没有将以太网电缆连接到电缆盒,所以我不得不自己剪断电缆的末端并安装插孔。幸运的是,我购买的“超赞工具包”(我的网站上有链接)包括压接工具、RJ45插头和测试设备,以确保我正确布线,并确定我的公寓周围的哪个端口与哪个电缆对应。当然,我的运气不是很好,最后一个8根线中的那一根正是我办公室需要的,但我想,未来的房客会受益于我的好事吧。整个过程花费了大约2-3个小时来布线千兆连接,幸运的是,我的女朋友喜欢帮忙,一杯葡萄酒让时间过得更快。
在有线网络之后,我开始通过组装家具、安装照明和拆卸硬件来设置我的办公室。我的桌子安装得很干净,我很满意我的办公室现在的样子。
![Before and After](https://miro.medium.com/v2/resize:fit:640/format:webp/1*F8pGyiLeGv9vnukqcnmOpw.png)
至于我的硬件设置,我购买的每台电脑都有16GB的RAM,我将其升级到32GB,并安装了固态硬盘(我升级了其中的一些)。由于每个设备都在运行Windows 10 Pro,我可以在我的网络中远程登录,并设置了一些服务。网络设备也很有趣,尽管我认为我的电缆管理还有改进的余地。
![Front of Home Lab Nodes](https://miro.medium.com/v2/resize:fit:640/format:webp/1*kC-qCk_zrKiK9ZAYflvwPQ.png)
![Back of Home Lab Nodes](https://miro.medium.com/v2/resize:fit:640/format:webp/1*JO-15Len0RjaueIiE6P3mQ.png)
现在,关于我在一开始提到的星号,为什么我要花费约一年的AWS成本在五台计算机上,它们总共有22个核心,而不是购买/构建一个高端的现代PC呢?嗯,有几个原因,我相信这可能会在房间里的一些其他技术极客中引起争议。
- 可扩展性 – 我可以轻松地添加另一个节点到我的集群中,或者删除一个节点进行维护/升级。
- 成本 – 升级和提供维护非常容易和廉价。此外,大多数单位在最大35W下运行,运行服务器的成本非常便宜。
- 冗余性 – 如果一个节点出现故障(例如,CPU死亡),我有校正脚本来平衡我的分布式工作负载。
- 教育 – 我正在学习大量的专业技能和经验,教育是不可估量的✨。
- 看起来很酷。第5点应该足以证明我的理由了。
说到教育,这里是我在集群中学到和实施的一些东西:
- 当克隆从较小到较大的驱动器时,您需要扩展新驱动器的卷,这通常需要第三方软件才能轻松完成(例如Paragon)。
- 需要手动分配静态IP地址以在台式机之间进行可靠的远程连接。
- 在迁移SQL服务器时,从备份中恢复比在两个不同的服务器之间进行查询更容易。
我相信在这条路上我还会学到更多的东西……
下面是我家庭网络的近似图。没有展示我的MacBook和手机等无线设备,但它们会在两个路由器之间跳转。最终,我还将添加我的单板计算机,可能还有一个PC到集群中。哦对了,我的旧的坏屏笔记本电脑?没有人在Facebook Marketplace上想花50美元甚至购买它,所以我在它上面安装了Windows 10 Pro进行远程访问,并将其添加到集群中作为好措施,实际上这可能是一件好事,因为我可以使用它的GPU来协助构建Tensorflow模型(并玩一些回合制游戏)。
![家庭实验室网络图](https://miro.medium.com/v2/resize:fit:640/format:webp/1*8vwJyOdNjiI9zQCv6yr8sg.png)
说到Tensorflow,这是我将在新的家庭实验室中实施的一些服务和功能:
- SQL服务器(目前托管着我的财务数据集,以及我正在爬取的新数据集,包括我的母校财务和我所在城市的公共安全数据集)
- Docker(用于托管我将要构建的应用程序/容器以及Minecraft服务器,因为,为什么不呢)
- Jenkins CI/CD系统,用于构建、训练和部署机器学习模型
- 我个人代码库的Git Repo
- 网络附加存储,支持我的摄影爱好的许多照片、文件和任何其他数据收集活动
- 以及其他的待定项目/服务
结语:
值得吗?嗯,有一种“只有时间能告诉我们”的元素。一旦我的信用卡冷静下来,从我的Amazon配送购买中恢复过来,我相信它也会享受AWS定价的解脱。我也期待能够构建和部署更多的爱好,以及收集更多的数据来写更多关于小猪AI的文章。我的下几篇计划文章包括对西弗吉尼亚大学目前面临的财务债务的分析,以及纳什维尔公共安全报告的探索性数据分析(以及可能用于预测紧急事件和分配资源需求的ML模型)。这些数据科学项目非常庞大,如果没有存储和查询大量相关数据的架构是不可能的。
你怎么看?离开云,建立一个家庭实验室听起来像是你想做的项目吗?你会选择哪种硬件?
如果你想了解我使用的硬件,请查看我的评论 www.willkeefe.com
我的一些相关最近的小猪AI内容:
Python中的生产计划和制造系统资源管理
高效的供应链、生产计划和资源分配管理比以往任何时候都更加重要。Python…
towardsdatascience.com
使用Python和机器学习进行犯罪地点分析和预测
使用Python、Folium和ScyPy,可以构建模型来说明犯罪事件,计算最佳位置…
towardsdatascience.com
也欢迎在LinkedIn上联系我!
https://www.linkedin.com/in/will-keefe-476016127/