As several others have mentioned, particles in the water. If you primary challenge is regulate an ascent rate without a fixed reference, then particles in the water.
In my experience, it is also easiest to try to stay just slightly negative, so you gently kick up. If the particles are moving down,then you are moving up. When that happens, stop kicking and exhale.
The particles should stop, then take a gentle kick and inhale and then think about venting some air.
It may be easier to envision the ascent as a series of slow movements and then short stops. In other words, you move up 3 or 5 feet slowly, then completely stop kicking and presumably stop for a few moments and then if you are still floating up, dump air and kick a little
So if you attempt as ascent that resembles climbing a set of stairs it is much easier to control the assent rate, compared to trying to manage a perfectly uniform, unvarying ascent rate that looks like a perfect slope. Moving up 3 or 5 feet, then being completely still and checking your buoyancy (via particles) should result in a very controlled and proper ascent rate. And if you are completely stopping the ascent ever 5 feet or so, it is very unlikely that you are going to lose control and float up. Stopping 10 or 30 times on the ascent pretty much assures that things are not going to get out of hand.
This is a good skill should you lose a buddy and also your computer during a dive.
If you are trying to hold a safety stop without fixed reference, it is harder to just use particles, because you can ever so slowly sink or rise and the particles won't show you much and you can drift up or down over a minute or so without noticing. If you have to perform a stop without reference and no depth gauge, you can train your self to look at the surface and estimate depth - assuming the water is clear enough for that.
Of course if you have a reel and dsmb, just slowly reel yourself up, that is about as simple as it gets - but that wasn't the original question.