FSRS for Bunpro Please

They mentioned in the linked discussion the possibility of implementing these as plugins, yeah. But to be fair, the workload for implementing something like this is not trivial. Definitely not a task for an end user, and something not to consider unless you want to start such a development project.

Plugins are also available only for desktop. The main mobile clients (official Anki for iOS and semi-official AnkiDroid for Android) have FSRS as common ground with desktop. With the fork that I linked, there’s currently little interest in adding SRS algorithms as plugins. You already have access to the newest iteration of FSRS plus the state of the art RWKV, integrated directly into Anki core, and it respects your mobile phone collection. There are also plenty of settings there for personalization, with FSRS-7 ones replacing the FSRS-6 in official Anki, and these added for RWKV:

I also think the SRS algorithm is so integral to Anki that it’s better for it to be tightly tied to the Anki client. You wouldn’t want an update of the client breaking your SRS due to version incompatibility. The lead maintainer of Anki has also expressed his disinterest in maintaining official plugins himself, so this fork might be the best option right now unless official Anki adopts these changes itself.

I think one of the problems with SRS (or FSRS) is that it is fundementally architected around Failed / Hard / Good / Easy button responses. To work with something like BunPro you would have to either rework the algorithm or map the users reponse to 4 possible values rather than the 2 at the moment (Pass/Fail). Something like

  • Failed: Got the answer completely wrong
  • Hard: Typo, or took >20 seconds to answer
  • Good: Got it right in <20 seconds
  • Easy: Got it right in <5 seconds

Although if BunPro has multiple sentences for each grammar point, you will also need to do something like keep the FSRS interval for each sentence separately and then use the mean or geometric mean of the scores for each sentence as the score for the grammar point.

FSRS works fine with only two grades, and I believe the majority uses it with the Pass/Fail addon. I also remember reading that it works better with only grades (tho it shouldn’t) probably because people don’t reliably grade themselves.

Making this time-dependent would be a nightmare. It might take longer to just read the sentence and understand the nuance.

4 Likes

Yeah, I also use Pass/Fail on Anki and it works great. I’d actually recommend it to anyone who’s still undecided about it. After you use it for a while, Easy/Hard buttons will feel like unnecessary noise.

And no time-dependent grading please. You may have just switched your attention to something else briefly or went AFK in the middle of a review. There’s no reliable way to tell what was the real cause for the user taking a long time to answer, and I bet most users wouldn’t even want to use something like that.

4 Likes

I’m trying to understand that thread…it looks like FSRS-7 is almost as good as the most expensive neural net, but small enough to fit on a mobile phone? So it’s pretty much the end all be all?

But it looks like the desktop fork still has a lot of WIP and rough edges…

It sounds like I can run the desktop fork without breaking my mobile client, but what happens when I open Anki on iOS and do some reviews? Do I just see everything scheduled with the old FSRS algorithm? Can I sync from mobile to AnkiWeb then, without breaking anything?

FSRS-7 isn’t nearly as good as the network based ones. You can check the accuracy column in the tables of the benchmark that I shared:

Algorithm Accuracy
RWKV-P 0.8450±0.0017
FSRS-7 recency 0.7394±0.0019
FSRS-6 0.6831±0.0045
Ebisu v2 0.5947±0.0031

I’m including Ebisu v2 just as reference because that’s the one with the worst score in the benchmark. And that’s already better than the old default SM-2 in Anki, which is better than tha basic algorithm Bunpro is currently using.

About the WIP stuff in the fork, that’s mostly related to the RWKV implementation, which is highly experimental right now. FSRS-7 however is pretty much complete. The same author of this fork has opened the PR in the fsrs-rs repo to include this officially, and then it could be added to official Anki, but all of this is so slow due to different reasons, if happening at all.

Regarding the sync issue, you’re right, whatever you review on phone is scheduled with old FSRS-6. It doesn’t mean you’re breaking your collection or your ability to sync through AnkiWeb. At worst, you’ll be limited to the accuracy of that older version, but just by syncing on your PC every now and then, the automatic rescheduling will already make positive effects.
Another main contributor is planning an AnkiDroid fork for FSRS-7 too btw.

It’s been a few weeks since I migrated all my vocabulary progress from Bunpro (using it now just for grammar) by bulk exporting notes with Yomitan and I’m overall very happy with how it works now. Throw in the mix a nice note template like Kiku and example sentences included in the dictionary definitions and I’m not missing much on anything.

Of course I’d be happy to have everything centralized again in Bunpro if they finally add FSRS and a way to import an Anki collection (Jiten is able to do that through AnkiConnect and it’s great), and also export it. Migrating my progress was a pain, and I really appreciated tools like Jiten having as a core concept the user being the one owning their data.

3 Likes

Quick question, would you mind sending me a DM detailing how your migration went, and how did Bunpro’s SRS levels map out to FSRS in your case?

I’m currently working on FSRS for Bunpro and while I can’t give a timeline, we’re taking a very close look now.

5 Likes

Please make it happen man this would be a dreaaaaaaam

1 Like

In fact, anyone on this thread who has successfully exported their Bunpro progress into a tool that uses FSRS as a scheduler, please shoot me a DM. I want to know how the main tiers (Beginner, Adept, Seasoned, Expert, Master) wound up feeling like/mapping out on FSRS.

Right now what I’m trying to validate is wether or not we could map an item’s predicted stability in FSRS into a Bunpro SRS stage as a start, before further optimization. Think of it as a baseline.

So, for example, if an item is 4 hours away in Bunpro, map that out into roughly 4 hours worth of stability.

2 Likes

@Daru

Sounds interesting, but isn’t per item differentiation the main strength of FSRS? Bunpro levels don’t do a good job of showing the difficulty of a word, just the stability. For example you can have two words on the same level in say Seasoned, but one might have reached that quickly while another might have taken 15 attempts and a bunch of ghosts.

I’ll been using Anki lately but not by exporting Bunpro or trying to match the level, so I might try that and see what I find.

Please implement FSRS soon, I’m already doing over 450 reviews a day, so I really need it. :sob:

5 Likes

Man, trying to read about the FSRS thingy and Im so lost. Seems interesting, and I can understand how 1% can be a big difference, but man, seems like a LOT of work to improve learning ability by 1%.

They are really doing some tree planting type shit that I cant even appreciate yet.

1 Like

my daily reviews on anki went down from 300-400 to 200-300 when I implemented FSRS, so I think it’s much more than a 1 percent difference tbh

4 Likes

Theyve had FSRS for a couple years now no?

Im talking about this end game with FSRS-7 and the neural network stuff. Like its the difference between being accurate at 97% to 98% proper retention rate for the average user. Of course each persons daily review is gonna change as it adjust and gets better, but its just insane to me. One of those mathematical things where 1% doesnt sound like a lot, but for millions of people its going to be a huge improvement.

The type of number corporations kill people over just to improve their bottom line. Its not a small number by any measure, just seems small.

oh I see, you just said FSRS originally so I thought you didnt get the point of FSRS in general haha

and yeah they have had FSRS for a while IG but you have to go into settings and turn it on yourself, its not the default

Yea, implementation was around the time I started Anki so Ive been using it as a baseline. I attribute it to the reason I do decently.

Unless you need something really specific on timing I cant see why not trying to use FSRS for brute force wouldnt be the best. AKA, words and the such.

I dont think its needed for grammar but thats a personal preference, I would love to see it implemented for the vocab in Bunpro due to their wide number of example sentences. Although I think they would need to ensure each word has proper, authentic Japanese pronunciation.(I personally dont like the machine voices) From a wide variety of speakers of age, sex, and region. Because I like to hear the sentences to shadow. And getting used to different types of speech increases general comprehension when hit with the 60 year old man who doesnt move his mouth to speak yet is incessant on speaking to foreigners.

This would remove the ability to choose who you pick for sentences but in the long run better for the user. But that is a rant for another part of the forum. I think implementation for Vocab would potentially draw a of people from Anki here permanently. Same if they decided to butt into Wani’s Market for Kanji.

But that would be a Massive project against what their main draw is, Grammar, and another topic in the forum.

2 Likes

Is mapping of the current Bunpro intervals to FSRS the main obstacle?

1 Like

@Alerean
Yes, that’s true, in this case it’s more so about defining a starting point system wide and allowing conversions from classic SRS into FSRS without losing progress.

@Special_Guest
Best way to think about it is that it stretches or shrinks depending on the content. Stuff that doesn’t require as much attention doesn’t get it, and stuff that does, well, does. Bunpro’s current algorithm is fixed to 12 stages, with FSRS we could have something like 8 stage items or 20 stage items. (Don’t quote me on those numbers. :stuck_out_tongue:)

@Saraph
Not the mapping per se, but the conversion and how each part of the system reacts to showing you progress. Since we need to make sure any part of the site can potentially support both, it’s a bit more involved.

3 Likes

Thanks for sharing some insight into the challenges!

I’ve given this some thought in the past, in the context of working on a small tool for my own personal reviews. Ideally, the way I’d like to see it work as a user (with the caveat that I don’t know how much of a pain this might be based on the current architecture) is:

  • Each card can be in in Classic or FSRS mode (presumably driven by some global/deck defaults).
  • Immediately assign the FSRS parameters (Stability and Difficulty) to all reviews, or do it lazily as the cards become due for review, even if the card is still in Classic mode.
  • Changing a card between Classic and FSRS don’t change any parameters.
  • Upon doing any review (FSRS or Classic), the FSRS parameters (S, D) are updated as usual. In Classic mode, assume “Good” for correct. The rationale is that FSRS will have better data to go on when/if the user switches to it. This also means that changing between modes and experimenting is not destructive.
  • Upon doing a review in FSRS mode: The next review is simply scheduled based on FSRS. The Classic level of the card is updated up or down based on the new interval - so e.g. if a card went from a 3 day interval to a 15 day interval, the classic level updates from Adept 1 (3 day rounded down to 2) directly to Seasoned 1 (15 rounded down to 14). It’s also possible that a card will remain on the same Classic level.
  • Upon doing a review in Classic mode: Schedule the card as per the Classic algorithm.
  • From an interface point of view, it’s perfectly acceptable to simply show the Classic level everywhere. IMO it’s more exciting to see the labelled levels rather than just a time period.
  • In terms of Grading answers, I’d ideally like it to auto-grade “Again” on failure, then let me choose from “Easy”, “Good”, “Hard” on success (with “Good” selected by default), regardless of whether I’m doing Cloze or Flashcards.

Either way, I’m very much looing forward for a version of this feature to eventually come out on Bunpro. I’ve recently started supplementing my Wanikani reviews with an Anki deck and the difference that FSRS makes for me is unbeliveable! Very excited to see your version, and thanks for all the great work on Bunpro!

1 Like

Your idea regarding always updating FSRS parameters even when the user is on classic mode is good. This is assuming that FSRS can work with an information like “I did a successful review after 30 days even though you scheduled it 50 days into the future”. If that’s the case and Bunpro also has some equivalent of revlog (review history of a card), that could be used as a starting point.

2 Likes