BitWrk - Distributed Peer-to-Peer rendering goes BETA

I thought about this and I think there is a way: bundling the BitWrk client with the Blender add-on could reduce installation to a single step. One big problem remains, and I hadn’t thought about that before. As it seems, the Bitcoin and Blender communities are quite disjoint.

Any Bitcoin fans out there to prove me wrong?

By the way, my offer still stands:
The next four people who are curious enough to try out Bitwrk and post their account ID here will receive 20mBTC.

I am interested in this project, though I am concerned about data security. As I guess workers are able to retrieve all scene data. Am I right?
My account ID is 1L53WbLsbHC92Vmy5pgxrSxdoYBnyzmFHv

Here you go with the mBTC!

You’re absolutely right about the privacy aspect. Most of the scene data is transferred to the workers. Only file names and scripted drivers are lost. Although the software doesn’t make it trivially easy to retrieve tha scene files, it is possible, and I wouldn’t recommend BitWrk (in its current state) for privacy-sensitive scenes.

There are ways around this problem, though.

Thx :wink:
After selecting BitWrk distributed rendering i have python errors in console:

Traceback (most recent call last):
File “C:\Users\ziel\AppData\Roaming\Blender Foundation\Blender\2.75\scripts\ad
dons\render_bitwrk.py”, line 136, in <lambda>
get=lambda value: value[‘complexity’])
KeyError: ‘bpy_struct[key]: key “complexity” not found’
File “C:\Users\ziel\AppData\Roaming\Blender Foundation\Blender\2.75\scripts\addo
ns\render_bitwrk.py”, line 136, in <lambda>
Traceback (most recent call last):
File “C:\Users\ziel\AppData\Roaming\Blender Foundation\Blender\2.75\scripts\ad
dons\render_bitwrk.py”, line 136, in <lambda>
get=lambda value: value[‘complexity’])
KeyError: ‘bpy_struct[key]: key “complexity” not found’
File “C:\Users\ziel\AppData\Roaming\Blender Foundation\Blender\2.75\scripts\addo
ns\render_bitwrk.py”, line 136, in <lambda>
Traceback (most recent call last):
File “C:\Users\ziel\AppData\Roaming\Blender Foundation\Blender\2.75\scripts\ad
dons\render_bitwrk.py”, line 136, in <lambda>
get=lambda value: value[‘complexity’])
KeyError: ‘bpy_struct[key]: key “complexity” not found’
File “C:\Users\ziel\AppData\Roaming\Blender Foundation\Blender\2.75\scripts\addo
ns\render_bitwrk.py”, line 136, in <lambda>

I found it a bit unstable but at last I managed to render one of my projects. Looks nice, works nice (when works).
What are your workers specs? I was playing with Boost factor but it was hard for me to guess what boost is needed to render frame in limited time. Unfortunately I can’t compare it with my gtx760 right now ;(
As I understand, I buy computing time from one of peers but I can’t tell how fast that peer is, so it makes difficult to say how many tiles (boost factor) are needed to render frame in specified time.

Can you briefly tell what are your ways around privacy problem?

On the other hand I see some legal problems regarding corporate taxes. I think in most countries it is impossible for company to buy computing time in anonymous network, at least without some creative accounting. It may limit your userbase to hobbyst and some forms of loosely controlled businesses ;(

Ok, thanks for the feedback!
I will investigate further into the errors you experienced (https://github.com/indyjo/bitwrk/issues/112).

The boost factor simply makes tiles smaller, while paying the same. I use it for testing but I should probably remove/hide it.

Workers have to finish within a time limit of 8 minutes per work unit, so that is an upper bound if all tiles can be worked on in parallel. That’s kind of theoretic, because transmission time increases with the number of workers involved, but it decreases if the same/a similar file has been worked on by the same worker.

My workers currently consist of two dedicatd i7 servers (4 and 6 cores), and a two-core Linode. Sometimes I add a PC of mine, but not at the time you were experimenting.

So, how to handle the privacy problem. It’s a trust issue and there are ways to increase trust. Sellers could be certified and identifiable. There could be instances of BitWrk without anonymous sellers at all. BitWrk could even serve as a technical platform for a completely closed rendering service.

Those are just vague ideas, but they might address the privacy issue and the legal issues at the same time. I’m open for suggestions, though!

What does ‘Concurrent tiles’ do? I set its value equaly to tiles per frame in hope of rendering whole image at once. Unfortunately it wasn’t faster. Is it because there is not enough workers in the network?

I tried boost factor but it was even slower. Is it because of the same reason?

I still don’t get what computing power I am paying for. If each work unit lasts for 8 minuts than I can buy the same computing time of either supercomputer or old crappy machine for the same price. Is that correct? What happens if 8 minutes turn out to be not enough?

Rendering my image took 23 minutes which I think is slower than my GPU (though I can’t really check it now). Will it be possible to speed up rendering when network grows? Or at least to choose GPU only workers? Let’s assume I need to render one frame in less than 3 minutes instead of 23 minutes to meet deadline.

PS. Did you refill my account or am I missing something? :wink:

Concurrent tiles defines how many tiles can be processed at the same time at most. You’re probably right that there weren’t enough workers. Then there is some throttling going on in the bitwrk client: It only sends jobs to the network if there are at most N unmatched bids, where N is 1 by default.

May I ask how big your scene was? I suspect the jobs kept a good part of their time in TRANSMITTING mode, and boost factor made that even worse. In effect, you were suffering from per-job overhead.

Where I live, my weak DSL uplink is the biggest bottleneck. It’s worsened by the fact that all data has to be transferred to each worker. Solving this problem has been my top priority for some time now.

The 8 minutes are actually just a time limit and serve as a guaranteed minimum service quality. If a worker doesn’t complete in 8 minutes, the job is aborted and money is reimbursed. A supercomputer would still try to complete the job as quickly as possible, while a weak worker might just barely make it in time. The amount of work both perform is (supposed to be) the same, though.

When rendering animations there is another trick for getting more performance. Have two instances of Blender running, one rendering frames 1 3 5 7…, the other rendering frames 2 4 6 8… You can extend that to three instances of Blender and so on. This keeps workers busy most of the time and you can achieve very high throughput. (Provided we get more workers, yes)

Your account is at mBTC 17.7855. You can check the ledger. I didn’t refill it in any way.

Maybe a short list of what to do in what situation could be helpful:

  • A lot of jobs are WORKING
    –> That’s what we would like to see, you’re making goo duse of the network
  • Jobs spend a lot of time in TRANSMITTING, some don’t make it in time
    –> Reduce the number of concurrent tiles in Blender for a while (you can do that during rendering)
    –> Try to achieve a smaller Blender project size
  • At least one job is in PLACED phase
    –> There is currently no matching seller left
    –> Try offering a higher price
  • Jobs time out in WORKING phase
    –> It’s their fault, not yours.
    –> But you can be nice to them and increase the boost factor.

My project was 33 MB so size and number of workers might be the problem.

I had a feeling that 1 mBTC was added to my account but most likely that was just a mistake.

During the test of the last days I noticed how larger projects like yours weren’t performing as well as they were supposed to. I put in some research and found the reason. It came down to the transmissions not being as efficient as they were supposed to.

BitWrk employs a deduplication mechanism to reduce transmissions to a minimum if a similar job has been worked on before. E.g., a high-resolution render won’t transfer the whole .blend file for each tile and each worker.

That mechanism wasn’t working as it should and I fixed the underlying problem in the source code. I also added compressed transmissions which further reduce transmission times. So, if you’re brave, you can try compiling BitWrk from GIT.

Of course there will be a followup release, probably next week.

Thanks for the great feedback by the way!

Hi, thanks for lots of answers you provided so far.

I have still questions though (maybe this thread my pose as a source for FAQ section on your page? ;). Mainly about bitcoin wallet safety… is my private key (of BTC wallet) held only on my PC? If so can i backup the wallet so in case of e.g. HDD failure i will not loose money? Can i use the same wallet on multiple PCs? Can i use my already existing BTC wallet?

No problem, keep 'em coming! I had the same thought about the FAQ and I realize I need to explain better what BitWrk is on the home page.

Can you use your already existing BTC wallet? This question confuses me a little. The answer that comes to my mind is: Yes, for transferring a small amount of money onto your BitWrk account. That’s all you need a Bitcoin client for. Did that answer your question?

If you use Bitcoin Core (the original Bitcoin client, a.k.a BitcoinQT), you should use the wallet encryption feature and you should definitely backup your wallet. It does contain all the private keys to access your money. See the Bitcoin Wiki for more information.

Pro tip: Once you have a working scheme for backing up your Bitcoin wallet, you can also use it to backup your BitWrk key, too!
Yes, your BitWrk key is also a Bitcoin key, and your BitWrk account ID is also a Bitcoin address you can receive money with.

To do so, you need to import your BitWrk key into your Bitcoin wallet.

Can you use your wallet on different PCs? Not practically. You can migrate a wallet from one PC to another, but having two copies of the same wallet will cause them to diverge over time, and that’s going to be very confusing.

Can you use the same BitWrk key on different PCs? Yes, you can do that for a small number of PCs. I wouldn’t recommend it for more than a couple of PCs for performance reasons.

I would like to remind you guys that I’m giving away 20mBTC of BitWrk credit for the next three participants who post their BitWrk account IDs here. You’re hereby invited to make the BitWrk servers run red hot! :evilgrin:

All you have to do is to visit http://bitwrk.net, download and install the BitWrk add-on for Blender, run the BitWrk client software and post the account ID (once the client software is running, the user interface is at http://localhost:8081).

Damn! haha you beat me to it. I actually planned to open something similar, also using Torrent & Btc payment. Altho i ve gone the binary route and now this stuff came close to a halt for me because of RL/Work. :slight_smile:

ps. meld dich mal wenn du Bock hast - ich hab mir da ein RIESENKONZEPT um das Prinzip gemacht. Und auch einige knifflige Dinge gelöst ( Baking / tiling / Multisampling / composition & encryption. Falls du dafür noch etwas Hilfe brauchst. Alleine ist das ne Tonne Arbeit, speziell wenn du noch bissl dabei bekommen willst. :wink:

Cheers!

Today i tried to sell my gpu power but i can not see the blue permit button. I tried first to buy and second to sell but again still not see the permit button for selling. What can i do to fix this problem?