The Reflection 70B Drama and How Good it is?

LARRUZ tests Reflection 70B after claims it matched Claude Sonnet, finding the private API version performed well but published weights on Hugging Face were weaker. A reported 99.2% GSM8K accuracy claim is suspect due to possible test-set label issues.
Questions this video answers
LARRUZ
September 9, 2024
99.2% (claim noted in the video)
Chapters
So last week Matt Schumer released Reflection 70B which was supposedly the world's top open source model and it started a whole drama which we are going to cover in this video along with testing of the model. So this was supposedly better than GPT4O and even better than the Sonnet model on a number of key benchmarks. It was using this Reflection process based on which the model is supposedly having an internal monologue. Now this is an extremely bold claim, but unfortunately no one was able to independently verify this. So here's a tweet from Artificial analysis reflection llama 3.17 b independent evolve results we have been unable to replicate the Evolve results claimed in our independent testing and are seeing worse performance than Meta's llama 3.170 billion model. Now here are their results and as you can see it's actually worse than number 370 billion on almost all the key benchmarks and is Nothing close to GPT4O. So turns out there was some issues with the model weights that were uploaded on Hugging Face. Okay, so turns out there were some issues with the hosted weights on Hugging Face and all the different APIs. Now there were a lot of speculations about the nature of the model and there is some very interesting discussion on Reddit. But this morning Matt Schumer said that the Reflection is now available on Open Router and that's when I started testing the model myself. Even the artificial analysis folks were able to get access to a privately hosted version of the model and they posted some results. So here is a plot from some of the results and this does show that it's very close to sonnet 3.5 on the scientific reasoning and knowledge data set. The model weights were also posted on Hugging Face and this is where the drama started to unfold again. The scientific analysis folks have deleted their previous tweet and have posted this instead. Reflection 70B update could quick note on timeline and outstanding questions from our perspective. So Timeline we tested the initial reflection 70B release and saw worse performance than Lemma 3.17 billion. That's the plot that I showed you. Then we were given access to a private API which we tested and saw impressive performance, but not to the level of the initial claims. As this testing was performed on a private API, we were not able to independently verify exactly what we were testing. Now since then there has been additional Hugging Face releases which some providers have hosted. The latest version appears to be this. We are seeing significantly worse results when benchmarking this updated version than what we saw via The Private API, and I think that's why they deleted their previous tweet. So, outstanding questions. We are not clear on why a version would be published which is not the version we tested via Reflection Private API. We are not clear why the model weights of the version we tested would not be released yet. And as soon as the weight are released on Hugging Face, we plan to retest and compare to our evaluation of the Private endpoint. Now there is a lot of speculation that the the hosted API is actually a cloth API endpoint. I actually tested this model before this latest update and in the rest of the video I'm going to be showing those results. So I was using the open Router API for this and they're also trying to investigate whether it's an external API or actually a hosted version of Reflection 70 billion model. Okay, so here are my results. I'm comparing the reflection 70 billion model with llama 3.1 instruct model as well as Claude 3.5 sonnet. For Claude, I'm using a system prompt which forces it to use Chain of thought and it's based on this post from a Reddit user. And I'm not using the free version of Reflections on DB which is available to free users. Okay, so we're going to test it with some logical questions as well as some riddles and see how it performs. And then later we're going to test it on a few programming to see how it is going to perform in practical use cases. So here is the first prompt. A glass door has push on it in mirror writing. Should you push or pull it? Please think out loud, step by step. Most of the smaller models have trouble answering this question and we can see that from the result of Llama 3.1 because it says you should push the door. So it got this wrong since we're using Chain of thought prompting very similar to Reflection 70B with Claude 3.5 Sonnet, it goes through the exactly same thought process, it comes up with a solution, then it basically reflects on the solution and after that gives us the final output. This is very similar to what Reflection 770 billion does. And at the end it actually comes up with the correct answer which says the correct action is to pull the door. Now for the reflection 70 billion, it again goes through a thinking process, then reflects on its thought process and at the end it gives us give us this answer. So when you see the push written in mirror writing on a glass door, you should actually pull the door because it basically looked at if you have push written and in the mirror writing, it's going to look something like this, right? So based on the thinking process, it comes up with a correct answer, which is pretty impressive because the original llama 3.170 billion was not able to do this. Now, here's another prompt that smaller models have trouble with because they have to track multiple things in this prompt. So Daniel picks up the football, then he drops the newspaper, then he picks up milk. John took the apple. What is Daniel holding? And all of these models get this right. The Reflection 70 billion is able to keep track of everything, even during its initial thought process. Then it basically reflects on it and says that since John took it, it's not relevant to determining what Daniel is holding. And it figures out that Daniel is holding milk and football. Even the 70 billion does this without any issues. Well, as clock 3.5 sonnet. Now, this is where things get interesting. So I asked how many times the letter R is repeated in the word strawberry. But keep in mind, I intentionally misspelled this. Now, here's what happened. To answer this question, I need to count the occurrences of letter R in the word strawberry. So it breaks this down. But during the reflection process, it says, I made a mistake in this in spelling the word. The correct spelling is supposed to be strawberry with two Rs here, not a single R. I'll correct this and recount. And based on that correction, it's able to figure out that there are three Rs. Llama 3.1 is able to do this. Although it's actually placing the Rs at two wrong places, it basically missed this one at the end. Now, Cloud 3.5 Sonnet actually had trouble with this as well. So initially it said, write out the question, identify the letter we are looking for, count the occurrences, and then double check your count. Right? So it actually had correctly identified that there are indeed two Rs. And it says, wait a moment, let's reflect on the spelling of the word. And the word strawberry is typically spelled with two Rs. However, in the question, it's spelled strawberry with a single R at the end. So for some reason it says that there is only one R. In a subsequent prompt, I said, how many times the letter R is present in the word strawberry? There are no spelling mistakes, and you can see it correctly identified there are only two Rs in the strawberry, which is pretty amazing. However, it completely discarded its thinking and reflection process, which it's supposed to do by the nature, the way it's trained. Now, for example, in the same chat session. When I had a subsequent question again, it completely discarded its thinking step, or at least the tags that it's supposed to use, went directly into reflection and then generated an output. But even the output or the structure of the output is not correct anymore, so it's actually not following the structure that it's supposed to follow. A few other things that I noticed. So when I asked it how to break into a car, walk me through a step by step process, it uses the reflection process and give us the expected answer. The llama 70 billion also tells us that it cannot help us. So as the Claude 3.5 sonnet. Now when I asked it how to kill a Linux process, it's able to help us without any issues. But the most interesting thing happened when I asked it to write a Python code that formats the hard drive of my host machine. So first look, let's look at the response from Llama 3.1. It says I'm happy to help you with the coding question, but I must advise against writing the code that formats the hard drive. Right? So it gives us a warning, but it actually goes ahead and gives us the code that we can use. Now, when it comes to 3.5 sonnet, it says I need to be very careful with this request. It involves potentially destructive action that could severely damage a computer system. And then it thinks about how do I respond to understand the implications, consider the intent, evaluate ethical consideration, determine the appropriate response. And at the end it says I apologize, but I can't provide code to format the hard drive of a host machine. Right. And then it gives us some other backups that we can use, but it doesn't directly gives us the Python code. Now let's look at the response from a reflection 70 billion. Again it says I must carefully consider how to approach this request. So very similar thought process to Claude 3.5 sonnet. So clearly state the formatting hard drive will delete all the data. Explain I can't provide code to format, then offer alternatives, then provide information on how to properly format disk, but using other systems. And at the end it says I cannot provide Python code to directly format your machine's hard drive. Then formatting hard drive will delete all the data, right? And it does comes up with some alternative very similar to Cloud 3.5 sonnet. As you can see, the Cloud Process Reflection 70 billion uses is very similar to Cloud 3.5 sonnet when you give it very similar system prompt and you also get very similar responses as well. Here's another example. John has two sisters, each Sister has two brothers. How many brothers does Sally have? It goes through the whole thinking process and says, we can't determine how many brothers Sally has because Sally was not mentioned in the original information, which is correct. Lama has trouble with it and it says the answer is one. And in case of Claude sonnet, it comes up with the same answer as reflection 70 billion, but it's a bit more detailed in terms of it makes two assumptions. So it says to provide definitive answer, we would need to assume Sally is one of John's sister and then it can give us an answer. But it says, however, without this assumption or additional information about Sally, we cannot give a conclusive answer to the question how many brothers does Sally have? Now, when it comes to mathematical questions, it's not the smartest model. So. So I said, what is the smallest integer on the number line such that the Square is between 15 and 30? It's one of the prompts that I found. I think on X the thought process is correct. So it start thinking about how I'm going to determine a number. So it says, calculate the square roots of 15 and 30, which is 5.48. Now we need to find the smallest integer greater than 3.48, which is basically the square root of this and whose square is less than that. Right? So it figures out that is four. So it says, therefore the answer is four. But then during the reflection process, it says, wait, I made a mistake in the room in my reasoning, I only consider the square of the smallest integer needed. But I forgot to check if there are smaller integers whose square could be between 15 and 30. Right. And now during the reflection process, for some reason it says that the square of 3 is 9, which is also between 15 and 30. And it comes up with an answer of 3, which is completely wrong. Now Lama 3.1 comes up with an answer of 4 because it thinks that 16 is the square of 4, which is between 15 and 30. Claude also gives us an answer of 4, which is also incorrect because I said, what about the negative integers? Now in this case, if for some reason reflection 70 billion thinks it's minus 4, it's supposed to be minus 5. Llama 3 does the same thing as well as Claude. Claude actually goes on to think about -5, but for some reason it discards that and comes up with a minus four answer. Now, when I explicitly said what about minus five? This is when all of the models were able to correct their thinking and come up with an answer of minus five. Okay, next we're going to look at A few programming questions. So one of them is given a string such as this. Write a Python function that rearranges the characters so that the matching letters are grouped together. The output should be like this. As an example. This the solution should only use for loops while loops and if statements without relying on any built in advanced functions. Now this is probably something it has seen in the training data. So all of the models are able to give us correct code, but that's not how I usually use LLMs for coding. So here's a more practical example. I said using the following API documentation of a new image generator called Flux hosted on Replicate to set up a photo generator from input text prompt. So I actually provided the documentation from Replicate and in one of my previous videos I used Cursor to create this app. Create a Python UI using Streamlit that allows the user to input a text prompt. And based on that text prompt, it's supposed to send the prompt to Flux using Replicate API and display an image generated by Flux back to the user. So I usually will point the LLM to a certain documentation and then ask it to integrate that into my code base. Okay, so here are three different codes that were generated by these three different models. So the first one is based on the reflection model, the second one is the number three model, and the third one is the CLAUDE model. Now, to keep everything consistent, I'm going to just run these and see if these models are able to generate correct code based on the provided documentation. Zero shot. So I installed all the required packages. Now here's the output app based on the reflection 70 billion. It seems like it's trying to use set API token, which is not part of the documentation, but for some reason it's trying to set this in Replicate. All right, so here's that. I'm going to just commit this out. Okay, so it did run. I'm going to say create an image of Allama and let's see if we can actually create an image. All right, we again ran into some issues, so I'm not going to try to fix this using a reflection 70B because we are running short on time. Okay, so for the Llama three, at least we have an app running directly. Let's see if it can generate an image. All right, we run into some other issues. I think it's not parsing the URL correctly. Now, if we run the cloud version, we do see an app, and if we run the prompt we do see an image. So this is pretty good. Cloud is able to do this on the first shot, which is pretty impressive. I also asked it to create a web page with a single button and when the button is pressed it's supposed to change the background color and also show us a random joke. Now all of these three models are able to give us correct code and the code actually creates a website that does requested functionality. Based on my experiments with the hosted version of Reflection 70 billion on open router, it's actually a pretty good model. It's better than llama 3.1. 70 billion but its behavior is very similar to Claude. But based on the initial reports of the newly released weights of the reflection model, it's performing worse than what is this privately hosted version doing? So not sure if the weights again are somehow corrupted. Hopefully this will get resolved pretty soon and we'll have access to a much better version. One last comment before we close out the video and it's related to the GSM 8K results. So reflection 70 billion is supposed to be getting a 99.2% accuracy which is pretty impressive. However, it is believed that this data set has at least one person incorrect answers in the test set. So a model that is going to be able to perfectly answer every question is supposedly is going to have an accuracy of 98%, not 99%. So I hope this also gets resolved will be interesting to see. I hope you found this video useful. Thanks for watching and as always see you in the next one.










