Native implementation of Load Balance

Bury review siblings will most certainly still be required as a function, while this does do its best to avoid scheduling siblings together, it is entirely possible for it to still happen (if every day in a range has a sibling, it has to put it somewhere).

While initially I did like overloading the “Bury review siblings” option, I’ve come to like it less the more I think on it. It being attached to the preset rather than note type or global collection feels wrong in a way that I’m still trying figure how to put into words.

Either way, I think the “Disperse Siblings” option in the main preferences dialog is going away.

1 Like

You thought about this way before this conversation happened? Did you ever bought this up before dae then?

I think now it is making less sense to me that burying is attached to presets rather than note types. This feels more of a workaround as there’s nothing inherent in the essence of bunch of decks that makes you turn to a feature like burying. There can be a correlation, if you are building deck-presets in that way, that’s why it works for most people. Yet it’s the note types and the siblings that they might have which actually makes you want to use the burying feature. But I agree the current way might just be less organic (once again, proposing no change here).

(I have divided my material according to chapters/subjects and thus IO cards + clozes stay together with basic+reverse note types, becomes illogical to divide these note types into different decks/presets just for burying)

I just spoke with David_Ankidroid, and he suggested determining whether a user is new or old based on information about his collection.

  1. Ideally offer the change to current users, if that’s not possible, don’t change
  2. ‘Load Balance’ for new users - it’s a sensible default

‘Old’ is based on the collection (config), not just the version of the app
If a user upgrades, then there is an existing collection. If they are a new user, the collection is created from scratch with defaults

EDIT: Also, while initially (when making a survey) I was in favor of making a toggle for Load Balance, I am now against it. I think Load Balance should be always enabled, period. For 2 reasons:

  1. There are no downsides to using it, it’s just Smart Fuzz. Fuzz, but better
  2. As another user saud, it would be weird to add a toggle just to remove it in the next release
3 Likes

it was brought up a few days ago in the issue and I agreed with it then but I disagree with it now.

Opinions here changing so fast it’s a chaos now. Only dae can save us.

1 Like

There are no downsides to using it, it’s just Smart Fuzz.

There may be a downside. When I tried using the load balance feature in the FSRS Helper add-on, I started seeing related cards (cards related to the same topic but which were not siblings) on the same day more frequently.

My explanation for this was that cards were being pulled from adjacent days into days with low review load, increasing the chances that related cards will be shown on the same day.

I turned off the feature and the issue disappeared. I am not very sure if the issue was caused by load balancing or it was something that happened by chance. But, there is a possibility that something of this sort may happen and people may want to disable load balance.

1 Like

It’s almost like sibling cards but they are from different notes. I honestly don’t think anyone ever bought that up though. So I don’t know how many people will be affected by it. Introducing Load Balance by defualt means one less option —> less clutter and less precieved complexity.

In any case, the current meta around flashcards is that atomic cards testing you on a single fact is the best. I don’t see a chance of memory interference in this case.

If this also applies to sibling cards there might be something we can call a “drawback” although not significant. [edit: I meant even after using avoid siblings/disperse siblings]

On a different note, does daily load affect retention? I feel my retention gets a little worse when I have a lot of cards to do (or even when I’m tired). Do we expect a positive gain from this if Load Balancer is used?

If it daily load does affect retention, we don’t know by how much. LMSherlock expects that retention will be unaffected.

@L.M.Sherlock do you have reasons to believe retention would be unaffected even after considering the effects of daily load?

The most visible recent change regarding fuzz was the v2-to-v3 shift. In v2, fuzz was applied, but after grading, so likely an average user never noticed it. In v3, fuzz is included in the intervals on the answer buttons. [There were also logic updates in fuzz between the 2 schedulers, but that wasn’t very visible.]

Obviously switching schedulers included more changes than simply making fuzz more visible, but as a point of comparison –

Category A – users who elected to start using the v3 scheduler when it was available. Unless they read the FAQ about it, I don’t think they would have had any warning about that change. [I don’t recall there being a link to the FAQ in Preferences where you enabled v3 – screenshot from ~Aug 2023]

Category B – users who were forced to shift to the v3 scheduler when v2 support ended. They were notified they needed to move to v3, and given a link to the FAQ.
image

Category B caused a big uptick (observationally/anecdotally) in folks asking questions about why their settings weren’t being respected. You can offer information to people, but you can’t make them take it.

I don’t know how you’ll tell that difference on install though. A fresh install on a new device happens before an existing user sets up syncing and downloads their collection.

I think no toggle/no settings for Load Balance at all is easier for everyone – I’m just advocating for a one-time “thing has changed, you can learn more about it if you want” warning.

But statistically, isn’t there just as much chance that a card will be moved away from related cards as toward related cards? If Load Balance is agnostic about what the cards are – and I believe it is – how would a correlation like that be possible? :person_shrugging:t4:

I think sibling-burying should be enough. Load Balance doesn’t need to be made more complicated by needing to avoid days where there are siblings. We already have a feature that does that.

Sibling burying will be harder to account for when determining load for a day. it could lead to uneven balancing. You could perhaps argue this feature just pre-buries it to the correct day :leaves:

1 Like

I think if the days are balanced pre-burying it will be enough. I assume that’s what balancing through the Helper add-on is already doing, right? Every day will have a certain number of buried siblings that will have to move to other days. Law of large numbers says that is going to come out in the wash.

But I suppose the question it comes down to is – how precisely does anyone need (or should anyone expect) their workload to be balanced?

If you balanced using a “stupid” tool, completely disregarding what is right for the cards – I bet you could get every day to the exact same number! :sweat_smile: But using a “smart” tool, that serves a higher master of preserving retention, should anyone be expecting their days to be closer than +/- 10%?

By using the same logic, one can argue that even if load balancer is not used, the randomness of the fuzz combined with a large number of reviews will cause the daily load to remain almost constant.

This is indeed true. I don’t use load balancing yet my daily load is usually between 160 to 175 reviews/day (within the 10% range). It falls out of that range only when

  • I am busy and don’t complete my daily reviews, leading to backlogs.
  • I am busy and don’t do many new cards, causing the daily load to fall rapidly.

But, clearly, some people want to make their load less dependent on random factors.

1 Like

Introducing a human variable always throws off the stats! :sweat_smile: People just come with too much entropy.

I might compare those situations this way –

  • Given 10 days with 160 cards scheduled each day – is there any reason to think any one of those days has more or fewer sibling cards than any other? – No.
  • Given 10 days with 160 cards due each day – is there any reason to think life might intervene on any one of those days and make a user more or less able to complete their reviews than on any other? – Of course!

Are we losing track of what is relevant for implementation? I would be able to follow the conversation better (and hopefully others too) if the implications of the replies for Load Balance implementation is also included in the reply itself.

I read how vaibhav ended his last reply and I honestly don’t know what conclusion should I draw from this or what exactly is being talked about.

Though I will address one thing I am quite sure is a topic being discussed. It was said that Load Balance can make siblings come closer. I also bought it up in GitHub before so here is the situation —

a) Newer cards have their siblings closer to each other (in terms of due date difference) as they are generally assigned to dates closer to each other. Remember that people also start learning all of their sibling cards around the same time (generally).

b) Load Balance essentially means a non-randomisation of fuzz. Cards don’t get equally distributed over a period of days.

c) When balancing newer cards, we already have days where daily load is peaking and days that are easier (to use the term for days with less load).

I think this is what will happen when you combine these factors — an overconcentration of newer cards on particular days (days that are easier, i.e., with lesser “already assigned load”). @vaibhav I think when you said related cards getting closer (but not siblings) this is what must have been happening. I am pretty sure thus, this is mostly applicable for newer cards. Actually, can you check whether my logic is correct, I often miss important details while talking about something.

To add to this, as @user1823 said, not doing disperse siblings/avoid siblings while review-sibling-burying is turned on will just make the load more uneven. Also, theoretically, siblings will have more overlap than average with Load Balance. See my explanation above.

I appreciate that you requested for clarification rather than just guessing what I meant.

In my last comment, I wanted to say that it is better to actively avoid siblings rather than just assuming that each day will have roughly the same number of siblings.

As an example, I mentioned that my daily load is well balanced even though I don’t use the load balancing feature. I believe that other people should have similar experiences. But still, many people demand a load balancer. So, it means that people don’t want their load to be balanced by random events. They want it to be balanced actively.

I think this is what will happen when you combine these factors — an overconcentration of newer cards on particular days (days that are easier, i.e., with lesser “already assigned load”). @vaibhav I think when you said related cards getting closer (but not siblings) this is what must have been happening. I am pretty sure thus, this is mostly applicable for newer cards.

I agree. For this reason, I suggest retaining the option to turn load balancer ON and OFF.

My next line of inquiry would be how much it is affecting long-term retention. If you initially had more uneven daily load then the effects of sibling clustering should be more; but on the other hand, there will be greater (positive) benefit of using Load Balance. But if you had more even load initially then there’s less reason for you to switch to Load Balance; but if you do, sibling clustering’s negative effects wouldn’t be too much for you. I think net-net we don’t know what is going to happen.

In any case, I am of the opinion that whatever happens, it won’t have any major ramifications. Less options is always better in my opinion but if a toggle for Load Balance is added, it should be in the note-type, by default turned on, which is a more intuitive way of going about it. No comments on whether it is worthwhile to invest time in this as I have no idea.

edit: by the way, dae hasn’t come online for a week. Haven’t seen him in GH either. I think in some countries June end is vacation time? Idk.

Hey @dae. Since you’re back, it would be great if you checked that out, as well as this forum post, and gave us your thoughts.