Pi Farm on ARM
Don't mind the dust! This is a small project I started a little while back to see if I could make a personal render farm that was relatively cheap and cost effective to power and run at home. I wasn't entirely concerned with the time to render aspect so I decided to test things out with some Raspberry Pis. Blender, being a free and powerful tool to do the task would be the software of choice and as I recalled it had a Remote render feature I had used "some time" ago. To my surprise Remote Render was no longer available in newer versions, this is what lead me here to Crowdrender!
8x Raspberry Pi 4B 4GB @ 68.44 each
8x 128GB MicroSDXC @ 12.49 each
8x PoE HAT @ 22.99 each
1x Cudy GS1010P 10 Port PoE Switch @ 79.90
1x Cloudlet CASE: Cluster Case @ 69.90
I ended up going with Ubuntu for the pis. Prior to this I was using Raspbian as that was the suggested flavor and a familiar distro from previous projects. The end result was less then satisfactory since I did not intend to build blender from source. The current available binary for Blender on Raspbian is 2.79.b+dfsg0-7 for Buster and 2.78.a+dfsg0-4 for Stretch.
The Ubuntu release was a little more trimmed down and that helps get more out of the Pis. Running in a headless mode we can ensure we get as much available resources as possible for rendering when the time comes. After performing an update on each system I installed Ansible and Blender 2.82.7 using apt. My intent with Ansible in the long run is to control each node in order to keep them up to date and run some checks as they render.
During my testing I sometimes found the nodes will hang and using the resync option in Blender doesn't fix the issue. The work around for this is to try reconnecting to each node, which if you are watching the node via ssh you'll see the files being resent as expected.
Installing crowd render
James and his team have worked very hard to get Crowdrender running on ARM, and for that I am very pleased!
The example commands I used can be found here, the direction provided by zocker-160 made installation via cli understandable, thanks for making this public! Be sure to enumerate the version folders to find what works with your blender installation or compile from source. At this moment in time (2021-06-27) I used py_3_8 from the "crowdrender" folder.
After getting everything installed my startup command looked like the following:
blender -noaudio -b --python ~/.config/blender/2.82/scripts/addons/crowdrender/src/py_3_8/serv_int_start.py -- -t "server_int_proc"
103.92 per pi @ 8 = 831.36 plus the cost of the case and PoE switch equals a little over 981.16 with tax and shipping. Which may sound like a lot up front but keep in mind you don't have to purchase all eight Pis at once. That was one of my main goals for starting this project, well that and offloading the render work from my main pc. Initially I had purchased 4 Pis with the required hardware and later on I purchased the last 4 so the cost was split in half. Knowing the Pis have limited resources but also need limited resources is another benefit of this project.
Render Times for Blender Demo Files
The files downloaded from the link where not changed from the defaults other then render settings for Crowdrender.
BMW @ 03:55.61
Agent 327 Barbershop @ 16:41.63
Classroom @ 12:03.60
Barcelone @ 16:26.92