Elon Musk’s quest to wirelessly connect human brains with machines has run into a seemingly impossible obstacle, experts say. The company is now asking the public for help finding a solution.

Musk’s startup Neuralink, which is in the early stages of testing in human subjects, is pitched as a brain implant that will let people control computers and other devices using their thoughts. Some of Musk’s predictions for the technology include letting paralyzed people “walk again and use their arms normally.”

Turning brain signals into computer inputs means transmitting a lot of data very quickly. A problem for Neuralink is that the implant generates about 200 times more brain data per second than it can currently wirelessly transmit. Now, the company is seeking a new algorithm that can transmit this data in a smaller package — a process called compression — through a public challenge.

As a barebones web page announcing the Neuralink Compression Challenge posted on Thursday explains, “[greater than] 200x compression is needed.” The winning solution must also run in real time, and at low power.

  • Waldowal@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 month ago

    I’m no expert in this subject either, but a theoretical limit could be beyond 200x - depending on the data.

    For example, a basic compression approach is to use a lookup table that allows you to map large values to smaller lookup ids. So, if the possible data only contains 2 values: One consisting of 10,000 letter 'a’s. The other is 10,000 letter 'b’s. We can map the first to number 1 and the second to number 2. With this lookup in place, a compressed value of “12211” would uncompress to 50,000 characters. A 10,000x compression ratio. Extrapolate that example out and there is no theoretical maximum to the compression ratio.

    But that’s when the data set is known and small. As the complexity grows, it does seem logical that a maximum limit would be introduced.

    So, it might be possible to achieve 200x compression, but only if the complexity of the data set is below some threshold I’m not smart enough to calculate.

    • QuadratureSurfer@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      edit-2
      1 month ago

      You also have to keep in mind that, the more you compress something, the more processing power you’re going to need.

      Whatever compression algorithm that is proposed will also need to be able to handle the data in real-time and at low-power.

      But you are correct that compression beyond 200x is absolutely achievable.

      A more visual example of compression could be something like one of the Stable Diffusion AI/ML models. The model may only be a few Gigabytes, but you could generate an insane amount of images that go well beyond that initial model size. And as long as someone else is using the same model/input/seed they can also generate the exact same image as someone else. So instead of having to transmit the entire 4k image itself, you just have to tell them the prompt, along with a few variables (the seed, the CFG Scale, the # of steps, etc) and they can generate the entire 4k image on their own machine that looks exactly the same as the one you generated on your machine.

      So basically, for only a few bits about a kilobyte, you can get 20+MB worth of data transmitted in this way. The drawback is that you need a powerful computer and a lot of energy to regenerate those images, which brings us back to the problem of making this data conveyed in real-time while using low-power.

      Edit:

      Tap for some quick napkin math

      For transmitting the information to generate that image, you would need about 1KB to allow for 1k characters in the prompt (if you really even need that),
      then about 2 bytes for the height,
      2 for the width,
      8 bytes for the seed,
      less than a byte for the CFG and the Steps (but we’ll just round up to 2 bytes).
      Then, you would want something better than just a parity bit for ensuring the message is transmitted correctly, so let’s throw on a 32 or 64 byte hash at the end…
      That still only puts us a little over 1KB (1078Bytes)… So for generating a 4k image (.PNG file) we get ~24MB worth of lossless decompression.
      That’s 24,000,000 Bytes which gives us roughly a compression of about 20,000x
      But of course, that’s still going to take time to decompress as well as a decent spike in power consumption for about 30-60+ seconds (depending on hardware) which is far from anything “real-time”.
      Of course you could also be generating 8k images instead of 4k images… I’m not really stressing this idea to it’s full potential by any means.

      So in the end you get compression at a factor of more than 20,000x for using a method like this, but it won’t be for low power or anywhere near “real-time”.

      • Cosmicomical@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 month ago

        just have to tell them the prompt, along with a few variables

        Before you can do that, you have to spend hours of computation to figure out a prompt and a set of variables that perfectly match the picture you want to transmit.

        • QuadratureSurfer@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 month ago

          Sure, but this is just a more visual example of how compression using an ML model can work.

          The time you spend reworking the prompt, or tweaking the steps/cfg/etc. is outside of the scope of this example.

          And if we’re really talking about creating a good pic it helps to use tools like control net/inpainting/etc… which could still be communicated to the receiving machine, but then you’re starting to lose out on some of the compression by a factor of about 1KB for every additional additional time you need to run the model to get the correct picture.

          • Cosmicomical@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            1 month ago

            You are removing the most computationally intensive part of the process in your example, that’s making it sound easy, while adding it back shows that your process is not practical.

            • QuadratureSurfer@lemmy.world
              link
              fedilink
              English
              arrow-up
              1
              ·
              1 month ago

              The first thing I said was, “the more you compress something, the more processing power you’re going to need [to decompress it]”

              I’m not removing the most computationally expensive part by any means and you are misunderstanding the process if you think that.

              That’s why I specified:

              The drawback is that you need a powerful computer and a lot of energy to regenerate those images, which brings us back to the problem of making this data conveyed in real-time while using low-power.

              And again

              But of course, that’s still going to take time to decompress as well as a decent spike in power consumption for about 30-60+ seconds (depending on hardware)

              Those 30-60+ second estimates are based on someone using an RTX 4090, the top end Consumer grade GPU of today. They could speed up the process by having multiple GPUs or even enterprise grade equipment, but that’s why I mentioned that this depends on hardware.

              So, yes, this very specific example is not practical for Neuralink (I even said as much in my original example), but this example still works very well for explaining a method that can allow you a compression rate of over 20,000x.

              Yes you need power, energy, and time to generate the original image, and yes you need power, energy, and time to regenerate it on a different computer. But to transmit the information needed to regenerate that image you only need to convey a tiny message.